dcellison /
kai
Kai is a local, Telegram-first personal engineering system: a persistent AI collaborator with repo-aware coding, memory, scheduling, PR review, and multi-backend resilience. Your machine, your data, your rules.
Loading repository data…
LakshyaBadjatya / repository
Local-first personal AI assistant & operating system — a real-life JARVIS / FRIDAY (Tony Stark–style AI): voice, autonomous agents, RAG memory, automation, and a fail-closed security broker. Runs entirely on your own machine.
Also: a responsive mobile/PWA layout, an in-process terminal cockpit (friday tui), and a Manifest V3 quick-ask browser extension.
FRIDAY is a local-first, provider-abstracted personal AI operating system that runs on your own machine. It's not a chatbot wrapper, and that's the point. Every turn gets sorted by a deterministic orchestrator and handed to a roster of named specialist operators. Anything with a side effect goes through a fail-closed security broker first — it injects secrets, checks permissions, and writes a hash-chained, tamper-evident audit ledger as it goes.
FakeLLM keeps the whole system (and its 1779 tests) green with zero network and no
keys; swap in NVIDIA NIM or Gemini when you want real replies.FRIDAY_ENABLE_*
flag, default off. The core boots tiny and dependency-light; you light up surfaces as
you need them.A deterministic router classifies each turn into a conversation mode (CONVERSATION,
RESEARCH, AUTOMATION, DEVICE_CONTROL, ALERTING, SECURITY_LOCKDOWN, CLARIFY, …)
before any model call — so routing still works even when the language backend is down.
The orchestrator then delegates to an 8-persona roster of least-privilege specialists,
each owning a distinct slice of the tool surface and its own memory namespace.
| Operator | Title | Owns |
|---|---|---|
| 🛰️ FRIDAY (prime) | Prime Operator | The broad union of every specialist — delegates or stands in for any of them |
| 🛡️ EDITH | Security & Lockdown | Owner-scoped defensive lockdown, security audit, notify |
| ⏱️ ORACLE | Automation & Scheduling | Scheduler, protocols, reminders |
| 📈 GECKO | Finance & Markets | Market data, web research |
| ✉️ KAREN | Communications | Notify, email, agent outreach |
| ✍️ VERONICA | Content & Outreach | Web research, agent outreach |
| 📚 JOCASTA | Memory & Knowledge | Knowledge base, RAG, knowledge graph |
| 🔭 VISION | Research & Analysis | Analysis, web search, agent outreach |
| 🔧 FORGE | Development & System | Run commands, find files, open apps, home/device control |
Personas are pure data — a title, a frozen tool allow-list, a memory namespace, and a
system prompt — so the prime's scope is computed as the union of the specialists and can
never drift out of sync. Inspect the live roster with friday roster.
The provider seam. The orchestrator depends only on an
LLMProviderabstraction — it imports no model SDK. NVIDIA NIM powers real replies, Gemini is an optional fallback, andFakeLLMis the deterministic offline default. The agent layer is grep-enforced clean of provider SDKs.
Every action FRIDAY takes — read-only or side-effecting — flows through the Broker, a single fail-closed gate. Nothing reaches a tool without passing the pipeline:
raw intent
│
▼
1. VALIDATE ── coerce args through the tool's typed model · reject bad args before any effect
2. CLASSIFY ── derive reversibility (side-effecting & not idempotent ⇒ irreversible)
3. GATE ── deny-by-default · unknown tool ⇒ denied · irreversible & unconfirmed ⇒ needs_confirmation
4. INJECT ── replace {{secret:NAME}} markers with real secrets at call time (never returned, never logged)
5. EXECUTE ── run via the injected tool registry
6. AUDIT ── append ONE hash-chained record (redacted args, decision, outcome, actor, channel)
│
▼
tamper-evident ledger
confirmed=true is held for confirmation. The tool
never runs on either path.{{secret:NAME}} are resolved from the
vault at call time. The resolved value is passed to the tool but never returned in a
result and never written to the audit — the ledger records the marker, not the secret.sha256(prev_hash + canonical_json(record)),
binding it to its predecessor. verify walks the chain and pinpoints the first tampered,
deleted, or forged link. Sensitive keys are redacted before hashing. Verify any time with
friday audit verify or GET /admin/audit/verify.KeyringVault backend
(your OS keychain), with EnvVault / FileVault (0600) / MemoryVault fallbacks. Secret
fields are typed SecretStr and redacted from logs.agent-reach CLI runs as an isolated subprocess with a clear install hint and no
fabricated output on failure.Around 50 capabilities, almost every one behind a FRIDAY_ENABLE_* flag (default off),
grouped by domain. The core chat/route/memory/broker loop — and the read-only observability
views — are always on.
| Capability | What it does | Flag |
|---|---|---|
| Action Broker | Fail-closed validate → classify → gate → inject → execute → audit pipeline | FRIDAY_ENABLE_BROKER |
| Agent reach | Reach other agents via an isolated outbound CLI subprocess | FRIDAY_ENABLE_AGENT_REACH |
| Extra tools | Optional extended tool surface beyond the core registry | FRIDAY_ENABLE_EXTRA_TOOLS |
| Plugins | Load drop-in capability plugins | FRIDAY_ENABLE_PLUGINS |
| Offline mode | Force the fully offline path (fake providers, no network) | FRIDAY_ENABLE_OFFLINE_MODE |
| Self-critique | A reflective self-critique pass on responses | FRIDAY_ENABLE_SELF_CRITIQUE |
| Capability | What it does | Flag |
|---|---|---|
| Knowledge graph | Extract entities/relations into a traversable graph | FRIDAY_ENABLE_KNOWLEDGE_GRAPH |
| RAG | Ingest documents and answer grounded from them | FRIDAY_ENABLE_RAG |
| Journal | Build and query a personal journal | FRIDAY_ENABLE_JOURNAL |
| Study | Spaced-repetition cards, review sessions | FRIDAY_ENABLE_STUDY |
| Postgres | Use Postgres for persistent memory instead of SQLite | FRIDAY_ENABLE_POSTGRES |
| Capability | What it does | Flag |
|---|---|---|
| Voice pipeline | Wake word → Whisper STT → orchestrator → TTS, with barge-in | FRIDAY_ENABLE_VOICE |
| Wake & summon | "Hey FRIDAY" reveals the HUD and she greets you; "summon <operator>" switches operator, each with its own voice | FRIDAY_ENABLE_WAKEWORD |
| Voiceprint | Speaker verification on the voice path | FRIDAY_ENABLE_VOICEPRINT |
| Capability | What it does | Flag |
|---|---|---|
| Sentiment | Offline lexicon mood scoring over text, with negation (POST /sentiment) | FRIDAY_ENABLE_SENTIMENT |
| Diarization | Who-spoke-when speaker segments for meeting capture (lazy pyannote) | FRIDAY_ENABLE_DIARIZATION |
| Image generation | Text-to-image (POST /imagegen) — SVG placeholder offline, diffusers when installed | FRIDAY_ENABLE_IMAGEGEN |
| PDF layout | Layout-aware PDF → pages of text blocks (POST /pdf/layout, lazy PyMuPDF) | FRIDAY_ENABLE_PDF_LAYOUT |
| Capability | What it does | Flag |
|---|---|---|
| 3D Studio | Describe a model by text/voice, explore by hand gesture & voice, export GLB/STL/OBJ | FRIDAY_ENABLE_STUDIO |
| Capability | What it does | Flag |
|---|---|---|
| Perception | YOLO detection, OCR, clipboard, screen capture → describe_screen() (privacy-heavy) | FRIDAY_ENABLE_PERCEPTION |
| Capability | What it does | Flag |
|---|---|---|
| Proactive | FRIDAY initiates without being prompted | FRIDAY_ENABLE_PROACTIVE |
| Scheduler | Time-based job scheduling | FRIDAY_ENABLE_SCHEDULER |
| Protocols | Multi-step named protocols / routines | FRIDAY_ENABLE_PROTOCOLS |
| Reminders | Create, list, complete reminders | FRIDAY_ENABLE_REMINDERS |
| Briefing | Generate a rolled-up briefing | FRIDAY_ENABLE_BRIEFING |
| Presence | MAC-based presence / known-device detection | FRIDAY_ENABLE_PRESENCE |
| Meetings | Capture and summarize meetings | FRIDAY_ENABLE_MEETINGS |
| Capability | What it does | Flag |
|---|---|---|
| Maps | Google Maps directions / places / geocoding | FRIDAY_ENABLE_MAPS |
| Market data | Live quotes & holdings via the Dhan broker API | FRIDAY_ENABLE_MARKET_DATA |
| Calendar | Google Calendar events | FRIDAY_ENABLE_CALENDAR |
| Gmail read / send | FRIDAY_ENABLE_EMAIL | |
| Comms | SMS / WhatsApp via Twilio | FRIDAY_ENABLE_COMMS |
| Instagram DMs | Count unread / read aloud / dictate replies to Instagram DMs by voice (unofficial, lazy instagrapi) | FRIDAY_ENABLE_INSTAGRAM_DMS |
| n8n | Draft and start n8n workflows behind a confirm-step | FRIDAY_ENABLE_N8N |
| Family sharing | Opt-in, revocable sharing with family | FRIDAY_ENABLE_FAMILY_SHARING |
| Home | Home/device controls | FRIDAY_ENABLE_HOME |
| Media control | Control media playback | FRIDAY_ENABLE_MEDIA_CONTROL |
| Downloads butler | Tidy |
Selected from shared topics, language and repository description—not editorial ratings.
dcellison /
Kai is a local, Telegram-first personal engineering system: a persistent AI collaborator with repo-aware coding, memory, scheduling, PR review, and multi-backend resilience. Your machine, your data, your rules.
jkjoker /
datawork是一款多功能本地知识库辅助工具,帮助个人拥有专属的本地agent系统,已支持windows。(Local-First Personal AI Agent System)
wangjiake /
Riverse — A personal AI agent designed for your own devices. Persistent memory, offline cognition, grows with every conversation. River Algorithm. Local-first.
Nocetic /
Knows your world. Answers to you. — the open-source personal AI agent you own.
r266-tech /
Local-first personal AI runtime — Telegram + WeChat transports, shared memory, skills, ops automation. The system layer your MCP servers plug into.
victorsabino /
Persistent memory for AI agents and personal knowledge management. Single-file Python CLI: hybrid semantic + keyword search (SQLite FTS5 + sqlite-vec embeddings, RRF fusion), dedup, tasks, linking. Local-first, no server. Built to be driven by Claude Code, Cursor, and other LLM coding agents.