{"id":47691514,"url":"https://github.com/project-nomos/nomos","last_synced_at":"2026-05-15T00:08:18.385Z","repository":{"id":347254534,"uuid":"1181044382","full_name":"project-nomos/nomos","owner":"project-nomos","description":"Your AI digital clone — learns who you are, acts on your behalf, remembers everything. Persistent vector memory, multi-agent teams, 60+ skills, smart model routing. Self-hosted, encrypted, multi-provider (Claude/Ollama/OpenRouter). Deploy to Slack, Discord, Telegram, WhatsApp \u0026 more in minutes.","archived":false,"fork":false,"pushed_at":"2026-04-18T00:18:33.000Z","size":6110,"stargazers_count":11,"open_issues_count":0,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-18T02:35:54.328Z","etag":null,"topics":["agent-memory","agent-skills","agentic-ai","ai-agents","ai-assistant","autonomous-agents","claude","claude-ai","claude-code","claude-skills","digital-clone","llm","mcp","multi-agent","multi-agent-systems","ollama","self-hosted"],"latest_commit_sha":null,"homepage":"https://projectnomos.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/project-nomos.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-13T17:29:36.000Z","updated_at":"2026-04-18T00:18:38.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/project-nomos/nomos","commit_stats":null,"previous_names":["project-nomos/nomos"],"tags_count":30,"template":false,"template_full_name":null,"purl":"pkg:github/project-nomos/nomos","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/project-nomos%2Fnomos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/project-nomos%2Fnomos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/project-nomos%2Fnomos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/project-nomos%2Fnomos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/project-nomos","download_url":"https://codeload.github.com/project-nomos/nomos/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/project-nomos%2Fnomos/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32171223,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-23T02:19:40.750Z","status":"ssl_error","status_checked_at":"2026-04-23T02:17:55.737Z","response_time":53,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent-memory","agent-skills","agentic-ai","ai-agents","ai-assistant","autonomous-agents","claude","claude-ai","claude-code","claude-skills","digital-clone","llm","mcp","multi-agent","multi-agent-systems","ollama","self-hosted"],"created_at":"2026-04-02T15:41:57.277Z","updated_at":"2026-05-15T00:08:18.049Z","avatar_url":"https://github.com/project-nomos.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"images/project-nomos-header.png\" alt=\"Project Nomos\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eYour AI digital clone — learns who you are, acts on your behalf, remembers everything, and represents you across every platform\u003c/strong\u003e\u003cbr/\u003e\n  Multi-provider (Anthropic, OpenRouter, Vertex AI, Ollama). Self-hosted. Encrypted. MIT licensed.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#get-running-in-2-minutes\"\u003eQuick Start\u003c/a\u003e \u0026middot;\n  \u003ca href=\"#why-nomos\"\u003eWhy Nomos\u003c/a\u003e \u0026middot;\n  \u003ca href=\"#what-you-get\"\u003eFeatures\u003c/a\u003e \u0026middot;\n  \u003ca href=\"#digital-clone\"\u003eDigital Clone\u003c/a\u003e \u0026middot;\n  \u003ca href=\"#channel-integrations\"\u003eChannels\u003c/a\u003e \u0026middot;\n  \u003ca href=\"#skills-system\"\u003eSkills\u003c/a\u003e \u0026middot;\n  \u003ca href=\"#plugins\"\u003ePlugins\u003c/a\u003e \u0026middot;\n  \u003ca href=\"#daemon-mode\"\u003eDaemon\u003c/a\u003e \u0026middot;\n  \u003ca href=\"CONTRIBUTING.md\"\u003eContributing\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/project-nomos/nomos/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/project-nomos/nomos\" alt=\"Release\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/project-nomos/nomos/actions/workflows/ci.yml\"\u003e\u003cimg src=\"https://github.com/project-nomos/nomos/actions/workflows/ci.yml/badge.svg\" alt=\"CI\" /\u003e\u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-MIT-blue.svg\" alt=\"MIT License\" /\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Claude_Agent_SDK-powered-6B4FBB?logo=anthropic\" alt=\"Claude Agent SDK\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/skills-60+-10b981\" alt=\"60+ Skills\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/MCP-compatible-10b981?logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0id2hpdGUiIHZpZXdCb3g9IjAgMCAxNiAxNiI+PGNpcmNsZSBjeD0iOCIgY3k9IjgiIHI9IjMiLz48L3N2Zz4=\" alt=\"MCP Compatible\" /\u003e\n  \u003ca href=\"https://github.com/project-nomos/nomos/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/project-nomos/nomos?style=flat\" alt=\"Stars\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003c!-- TODO: Add demo GIF here — record a 30-second terminal session showing:\n     1. `nomos chat` startup with gradient spinner\n     2. \"Prep me for my 2pm — check Slack, my recent emails, and what we discussed last week\" — the clone acting on your behalf\n     3. \"Draft a reply to Sarah as me and schedule the follow-up\" — representing you, not just answering questions\n     Ideal size: 800x450, \u003c 5MB, hosted on GitHub\n--\u003e\n\u003c!-- \u003cp align=\"center\"\u003e\n  \u003cimg src=\"images/demo.gif\" alt=\"Nomos demo\" width=\"700\" /\u003e\n\u003c/p\u003e --\u003e\n\n---\n\n## Why Nomos?\n\nMost AI assistants are stateless chatbots that forget you the moment a conversation ends. Nomos is building toward something different: an **AI digital clone** that knows you deeply, acts on your behalf, and gets smarter with every interaction.\n\n- **Ingests your history** -- Import years of Messages.app, Gmail, and WhatsApp messages for deep context. The clone learns primarily from direct conversations and draft edits -- when you modify a draft before approving, the edit is captured as a learning signal. CLI manual ingestion (`nomos ingest slack --since DATE`) is available for on-demand imports.\n- **Learns your voice** — Per-contact communication style model analyzes how you write — formality, length, emoji, greetings — and drafts messages in your authentic voice. Different tone for your manager vs. your friends.\n- **Compiles knowledge** — A Karpathy-style knowledge wiki transforms raw messages into structured articles about your contacts, projects, and topics. The clone reads compiled knowledge first, RAG second.\n- **Unified identity graph** — Links contacts across Slack, email, Messages.app, Discord, Telegram, and WhatsApp. One person, one profile, regardless of which platform they message you on.\n- **Acts on your behalf** -- Drafts and sends emails, manages your calendar, preps meeting briefs, tracks commitments, follows up, triages across channels. Per-platform consent modes: `always_ask` (draft + approve), `auto_approve` (send immediately + FYI), `notify_only` (just notify, no response). Per-contact autonomy layered on top: auto-send, draft-for-approval, or silent.\n- **Remembers everything** — Every conversation is auto-indexed into vector memory. Ask \"what did we decide about the API migration last week?\" and it knows — across channels, across sessions.\n- **Reads you in real time** — A Theory of Mind engine tracks your mental state per session — focus level, emotional signals, urgency, whether you're stuck. Rule-based signals run every turn; a background LLM assessment catches sarcasm, implicit frustration, and goal shifts every few turns. The agent adapts its response style automatically.\n- **Represents you everywhere** — Slack, Discord, Telegram, WhatsApp, Messages.app, Email, terminal, web. Slack User Mode lets it draft and send messages as you. It's not a bot in your channel — it's you, augmented.\n- **Agent-to-agent trust** — CATE protocol (Consumer Agent Trust Envelope) enables secure communication between your clone and other agents with DID-based identity, verifiable credentials, policy enforcement, and anti-spam stamps.\n- **Multi-provider** — Anthropic, Vertex AI, OpenRouter, Ollama, or any compatible endpoint. Smart routing sends simple queries to fast models and complex ones to capable models — cutting costs 5-10x automatically.\n- **60+ built-in skills** — Gmail, Calendar, Drive, Docs, Sheets, document generation, image/video creation, browser automation, and more.\n- **Always on** — Runs as a background daemon with scheduled tasks, proactive notifications, and a web management dashboard.\n- **Multi-agent teams** — A coordinator decomposes complex tasks, spawns parallel workers, and synthesizes results.\n- **Encrypted \u0026 self-hosted** — AES-256-GCM for all secrets. Your clone stays on your infrastructure. Built on Anthropic's [Claude Agent SDK](https://docs.anthropic.com/en/docs/claude-code/sdk).\n\n---\n\n## Get Running in 2 Minutes\n\n```bash\n# Homebrew (recommended)\nbrew tap project-nomos/nomos https://github.com/project-nomos/nomos\nbrew install project-nomos/nomos/nomos\n\n# Then just:\nnomos chat\n```\n\nThat's it. The daemon and Settings UI start automatically after install. A browser-based setup wizard handles the rest — database connection, API provider, assistant personality, and channel integrations. Everything is saved encrypted in PostgreSQL.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eOther installation methods\u003c/strong\u003e\u003c/summary\u003e\n\n### npm (GitHub Packages)\n\n```bash\nnpm install -g @project-nomos/nomos --registry=https://npm.pkg.github.com\n```\n\n### Docker Compose (includes database)\n\n```bash\ngit clone https://github.com/project-nomos/nomos.git\ncd nomos\ncp .env.example .env\n# Edit .env with your ANTHROPIC_API_KEY (or OPENROUTER_API_KEY)\ndocker compose up -d\n```\n\nThe agent is accessible via gRPC on port 8766 and WebSocket on port 8765.\n\n### Docker (standalone)\n\n```bash\ndocker run -d --name nomos \\\n  -e DATABASE_URL=postgresql://nomos:nomos@host.docker.internal:5432/nomos \\\n  -e ANTHROPIC_API_KEY=sk-ant-... \\\n  -p 8766:8766 -p 8765:8765 \\\n  ghcr.io/project-nomos/nomos:latest\n```\n\n### From source\n\n```bash\ngit clone https://github.com/project-nomos/nomos.git\ncd nomos\npnpm install\npnpm build\npnpm link --global\nnomos chat\n```\n\n\u003c/details\u003e\n\n### Prerequisites\n\n- **Node.js** \u003e= 22\n- **PostgreSQL** with the [pgvector](https://github.com/pgvector/pgvector) extension\n- **One of**: Anthropic API key, Google Cloud credentials (Vertex AI), [OpenRouter](https://openrouter.ai) API key, or a local [Ollama](https://ollama.com) instance\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eDatabase setup\u003c/strong\u003e\u003c/summary\u003e\n\nNomos requires PostgreSQL with the [pgvector](https://github.com/pgvector/pgvector) extension. Choose whichever method suits your setup:\n\n#### Option A: Homebrew (macOS)\n\nPostgreSQL and pgvector are separate packages — you need both:\n\n```bash\n# 1. Install PostgreSQL\nbrew install postgresql@17\nbrew services start postgresql@17\n\n# 2. Install the pgvector extension\nbrew install pgvector\n\n# 3. Create the database\ncreatedb nomos\n\n# 4. Set your connection string\nexport DATABASE_URL=postgresql://localhost:5432/nomos\n```\n\n#### Option B: Docker (recommended — includes pgvector out of the box)\n\nThe `pgvector/pgvector` image bundles PostgreSQL + pgvector together, no separate install needed:\n\n```bash\ndocker run -d --name nomos-db \\\n  -e POSTGRES_USER=nomos \\\n  -e POSTGRES_PASSWORD=nomos \\\n  -e POSTGRES_DB=nomos \\\n  -p 5432:5432 \\\n  pgvector/pgvector:pg17\n\nexport DATABASE_URL=postgresql://nomos:nomos@localhost:5432/nomos\n```\n\n#### Option C: Docker Compose (included in repo)\n\n```bash\ndocker compose up -d db\nexport DATABASE_URL=postgresql://nomos:nomos@localhost:5432/nomos\n```\n\n#### Then run migrations\n\n```bash\nnomos db migrate    # Creates all tables, enables pgvector extension\n```\n\nThe setup wizard handles this automatically when you run `nomos chat` for the first time, but you can also run migrations manually at any time (they're idempotent).\n\n\u003e **Already have PostgreSQL installed another way?** (Postgres.app, Linux package manager, etc.) — just install pgvector separately following the [pgvector install guide](https://github.com/pgvector/pgvector#installation), create a database, and set `DATABASE_URL`.\n\n\u003c/details\u003e\n\n---\n\n## What You Get\n\n|                           | Feature                                     | What it does                                                                                                                       |\n| ------------------------- | ------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |\n| :dna:                     | [**Data Ingestion**](#digital-clone)        | Import years of Slack, Gmail, Messages.app, Discord, Telegram, and WhatsApp history. Auto-sync on connect + continuous delta sync. |\n| :pen:                     | [**Voice Modeling**](#digital-clone)        | Per-contact style analysis — formality, length, emoji, greetings. Drafts in your voice.                                            |\n| :books:                   | [**Knowledge Wiki**](#digital-clone)        | LLM-compiled articles about your contacts, projects, and topics. Structured knowledge.                                             |\n| :link:                    | [**Identity Graph**](#digital-clone)        | Unified contacts across all platforms. One person, one profile.                                                                    |\n| :shield:                  | [**CATE Protocol**](#digital-clone)         | Agent-to-agent trust with DIDs, verifiable credentials, policy, and anti-spam stamps.                                              |\n| :brain:                   | [**Persistent Memory**](#features-in-depth) | Every conversation auto-indexed into pgvector. Recall anything from any session or channel.                                        |\n| :crystal_ball:            | [**Theory of Mind**](#features-in-depth)    | Hybrid rule + LLM per-session mental state tracking. Detects frustration, urgency, goal shifts, stuck patterns.                    |\n| :speech_balloon:          | [**7 Channels**](#channel-integrations)     | Slack, Discord, Telegram, WhatsApp, Messages.app, Email — thin adapters, one agent runtime.                                        |\n| :busts_in_silhouette:     | [**Multi-Agent Teams**](#features-in-depth) | Coordinator + parallel workers. Hand off complex tasks, get synthesized results.                                                   |\n| :zap:                     | [**Smart Routing**](#features-in-depth)     | Route by complexity across any provider — cloud, local, or hybrid.                                                                 |\n| :art:                     | [**Image \u0026 Video Gen**](#features-in-depth) | Gemini image + Veo video generation, conversational — just ask.                                                                    |\n| :desktop_computer:        | [**Web Dashboard**](#features-in-depth)     | Next.js settings UI with setup wizard. No YAML editing.                                                                            |\n| :jigsaw:                  | [**60+ Skills**](#skills-system)            | Three-tier loading: bundled, personal, project. Create your own in minutes.                                                        |\n| :lock:                    | [**Encrypted Secrets**](#features-in-depth) | AES-256-GCM for all API keys and tokens. Auto-key on first run.                                                                    |\n| :globe_with_meridians:    | [**5 API Providers**](#features-in-depth)   | Anthropic, Vertex AI, OpenRouter, Ollama, or any compatible endpoint.                                                              |\n| :arrows_counterclockwise: | [**Self-Improvement**](#features-in-depth)  | Nomos can analyze its own code, implement fixes, and open PRs to itself.                                                           |\n| :sleeping:                | [**Sleep \u0026 Resume**](#features-in-depth)    | Agents pause and wake with a prompt — for polling, monitoring, and async waits.                                                    |\n| :anchor:                  | [**Event Hooks**](#features-in-depth)       | Command, HTTP, or prompt hooks on tool use, lifecycle, and compaction.                                                             |\n| :crescent_moon:           | [**Auto-Dream**](#features-in-depth)        | Background memory consolidation with 4-phase cleanup.                                                                              |\n| :package:                 | [**Plugins**](#plugins)                     | 21 pre-installed plugins from the Claude marketplace — PR review, code review, GitHub, Linear, Playwright, and more.               |\n| :moneybag:                | [**Cost Tracking**](#features-in-depth)     | Per-model pricing, session costs, usage breakdown in CLI and web dashboard.                                                        |\n\n---\n\n## Channel Integrations\n\n| Platform         | Mode            | Transport                                                                                                          |\n| ---------------- | --------------- | ------------------------------------------------------------------------------------------------------------------ |\n| **Slack**        | Bot + User Mode | Web API polling + OAuth (multi-workspace, draft-before-send)                                                       |\n| **Discord**      | Bot             | Gateway                                                                                                            |\n| **Telegram**     | Bot             | grammY                                                                                                             |\n| **WhatsApp**     | Bridge          | Baileys (no Meta Business API needed)                                                                              |\n| **Messages.app** | `imsg` CLI      | Basic mode (no setup) or advanced mode (SIP disabled). Passive (draft \u0026 approve) or agent client (direct to owner) |\n| **Email**        | IMAP + SMTP     | IMAP IDLE for real-time push, SMTP for sending                                                                     |\n| **Web/gRPC**     | Client          | gRPC (8766) + WebSocket (8765)                                                                                     |\n\nEach adapter is ~50-100 LOC. All agent logic is centralized in `AgentRuntime`. See [docs/channels.md](docs/channels.md) for env vars and setup, or the [individual integration guides](docs/integrations/).\n\n---\n\n## Skills System\n\nSkills are markdown files (`SKILL.md`) with YAML frontmatter that provide domain-specific instructions to the agent. Loaded from three tiers: **bundled** (`skills/`) → **personal** (`~/.nomos/skills/`) → **project** (`./skills/`).\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eAll 60+ bundled skills\u003c/strong\u003e\u003c/summary\u003e\n\n| Skill                   | Description                                                    |\n| ----------------------- | -------------------------------------------------------------- |\n| `algorithmic-art`       | Generative art and creative coding                             |\n| `apple-notes`           | Apple Notes integration                                        |\n| `apple-reminders`       | Apple Reminders integration                                    |\n| `brand-guidelines`      | Brand and style guide creation                                 |\n| `canvas-design`         | Canvas-based design generation                                 |\n| `digital-marketing`     | Google Ads + Analytics campaigns, team mode analysis workflows |\n| `discord`               | Discord bot and integration help                               |\n| `doc-coauthoring`       | Collaborative document writing                                 |\n| `docx`                  | Word document generation                                       |\n| `frontend-design`       | Frontend UI/UX design guidance                                 |\n| `github`                | GitHub workflow and PR management                              |\n| `image-generation`      | Image generation with Gemini (prompts, styles, capabilities)   |\n| `gws-gmail`             | Gmail API (messages, drafts, labels)                           |\n| `gws-drive`             | Google Drive (files, folders, permissions)                     |\n| `gws-calendar`          | Google Calendar (events, scheduling)                           |\n| `gws-sheets`            | Google Sheets (read, write, append)                            |\n| `gws-docs`              | Google Docs (create, read, edit)                               |\n| `gws-slides`            | Google Slides (presentations)                                  |\n| `gws-shared`            | Google Workspace shared auth and conventions                   |\n| `internal-comms`        | Internal communications drafting                               |\n| `mcp-builder`           | MCP server development                                         |\n| `pdf`                   | PDF document generation                                        |\n| `pptx`                  | PowerPoint presentation generation                             |\n| `self-improve`          | Self-improvement and learning                                  |\n| `skill-creator`         | Create new skills from prompts                                 |\n| `slack`                 | Slack app and integration help                                 |\n| `slack-gif-creator`     | Slack GIF creation                                             |\n| `telegram`              | Telegram bot and integration help                              |\n| `theme-factory`         | Theme and color scheme generation                              |\n| `video-generation`      | Video generation with Veo (camera, styles, prompt guidance)    |\n| `weather`               | Weather information and forecasts                              |\n| `web-artifacts-builder` | Web artifact (HTML/CSS/JS) creation                            |\n| `webapp-testing`        | Web application testing guidance                               |\n| `whatsapp`              | WhatsApp integration help                                      |\n| `xlsx`                  | Excel spreadsheet generation                                   |\n\n\u003c/details\u003e\n\n### Creating a custom skill\n\n```bash\nmkdir -p ~/.nomos/skills/my-skill\ncat \u003e ~/.nomos/skills/my-skill/SKILL.md \u003c\u003c 'EOF'\n---\nname: my-skill\ndescription: \"What this skill does\"\n---\n\n# My Skill\n\nInstructions for the agent when this skill is active...\nEOF\n```\n\nThe bundled `skill-creator` skill can also generate skills on your behalf via conversation.\n\n---\n\n## Plugins\n\nNomos supports plugins from the Claude Code ecosystem — extending the agent with additional skills, agents, hooks, and MCP servers. 21 plugins are pre-installed at build time; browse and install more from the Claude marketplace via CLI.\n\n```bash\nnomos plugin list                   # Show installed plugins (21 pre-installed)\nnomos plugin available              # Browse all marketplace plugins\nnomos plugin install \u003cname\u003e         # Install a plugin\nnomos plugin remove \u003cname\u003e          # Remove a plugin\n```\n\n### Pre-installed plugins (21)\n\n**14 first-party** — agent-sdk-dev, code-review, code-simplifier, commit-commands, feature-dev, frontend-design, hookify, learning-output-style, math-olympiad, mcp-server-dev, plugin-dev, pr-review-toolkit, security-guidance, skill-creator\n\n**7 community** — discord, github, imessage, linear, playwright, telegram, terraform\n\nPlugins are fetched at install time from `github.com/anthropics/claude-plugins-official` (Apache 2.0) — not bundled in the repo. They're loaded into every SDK session — CLI, daemon, and team workers. See [docs/plugins.md](docs/plugins.md) for the full list and architecture details.\n\n---\n\n## Daemon Mode\n\nThe daemon turns Nomos into an always-on, multi-channel AI gateway. It boots an agent runtime, gRPC + WebSocket servers, channel adapters, and a cron engine — then processes incoming messages from all sources through a per-session message queue.\n\n```bash\nnomos daemon start               # Background mode (includes Settings UI)\nnomos daemon run                 # Development mode (foreground with logs)\nnomos daemon stop                # Stop running daemon\nnomos daemon status              # Check if running\n\nnomos service install            # Install as launchd service (auto-start on login)\nnomos service uninstall          # Remove launchd service\n```\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eHow the daemon works\u003c/strong\u003e\u003c/summary\u003e\n\n```\n                         +-------------------+\n                         |     Gateway       |\n                         | (orchestrator)    |\n                         +--------+----------+\n                                  |\n      +------------+--------------+--------------+----------+\n      |            |              |              |          |\n+-----v------+ +--v-----+ +-----v--------+ +---v------+ +-v----------+\n| gRPC       | | WS     | | Channel      | | Cron     | | Draft      |\n| Server     | | Server | | Manager      | | Engine   | | Manager    |\n| (port 8766)| | (8765) | | (adapters)   | |(schedule)| | (Slack UM) |\n+-----+------+ +---+----+ +-----+--------+ +---+------+ +--+---------+\n      |             |            |              |            |\n      +------+------+------+----+------+-------+------+-----+\n                            |\n                   +--------v---------+\n                   |  Message Queue   |\n                   |  (per-session    |\n                   |   FIFO)          |\n                   +--------+---------+\n                            |\n                   +--------v---------+\n                   |  Agent Runtime   |\n                   |  (Agent SDK)     |\n                   +------------------+\n```\n\n1. **Gateway** boots all subsystems and installs signal handlers for graceful shutdown.\n2. **Channel adapters** register automatically based on which environment variables are present.\n3. **Message queue** serializes messages per session key — concurrent sessions process in parallel.\n4. **Agent runtime** loads config, profile, identity, skills, and MCP servers once at startup.\n\n\u003c/details\u003e\n\n---\n\n## Digital Clone\n\nThe digital clone features transform Nomos from a stateless chatbot into a persistent representation of you.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eHistorical Data Ingestion\u003c/strong\u003e\u003c/summary\u003e\n\nImport communication history from Messages.app, Gmail, and WhatsApp. The ingestion pipeline deduplicates, chunks, embeds, and stores messages in pgvector-backed memory. Auto-triggered bulk ingestion on channel connect has been retired for Slack, Discord, and Telegram -- the agent now learns primarily from direct conversations, draft edits, and knowledge extraction. CLI manual ingestion still works for on-demand imports. iMessage and Email ingestion is retained for style model training.\n\n```bash\nnomos ingest imessage --since 2024-01-01              # Import Messages.app history\nnomos ingest slack --since 2024-06-01                 # Import Slack (sent only)\nnomos ingest gmail --since 2024-01-01                 # Import Gmail (sent only)\nnomos ingest discord --since 2024-01-01               # Import Discord (sent only)\nnomos ingest telegram                                  # Import Telegram (sent only)\nnomos ingest status                                    # Check sync status\n```\n\nSmart filtering: Slack, Gmail, Discord, and Telegram ingest only sent messages. Messages.app and WhatsApp ingest both directions for context, but style modeling uses sent messages exclusively.\n\nSee [docs/ingestion.md](docs/ingestion.md) for full details.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eCommunication Style Model\u003c/strong\u003e\u003c/summary\u003e\n\nAnalyzes your sent messages to learn how you write — globally and per contact. Extracts formality level, typical message length, emoji usage, punctuation habits, greeting and sign-off patterns. The resulting `StyleProfile` is injected into the system prompt when drafting messages.\n\n- **Global profile** — Your overall writing voice\n- **Per-contact overrides** — More formal with your manager, casual with friends\n- **Confidence-tracked** — Warns when sample count is too low for reliable modeling\n\nSee [docs/style-model.md](docs/style-model.md) for full details.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eKnowledge Wiki\u003c/strong\u003e\u003c/summary\u003e\n\nA Karpathy-style compiled knowledge base. An LLM periodically compiles raw ingested messages into structured markdown articles organized by contact, topic, and timeline. The agent reads compiled wiki articles first (cheap, structured), falls back to vector search for details.\n\n```\n~/.nomos/wiki/\n  contacts/sarah-chen.md     # Everything about Sarah\n  topics/kubernetes.md        # Cross-contact topic synthesis\n  timeline/2026-04.md         # Monthly activity digest\n```\n\nArticles stored in PostgreSQL (source of truth) and synced to disk as a browsable cache.\n\nSee [docs/knowledge-wiki.md](docs/knowledge-wiki.md) for full details.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eTheory of Mind\u003c/strong\u003e\u003c/summary\u003e\n\nA hybrid per-session engine that models the user's mental state in real time so the agent can adapt its response style.\n\n**Layer 1 -- Rule-based (every turn, zero latency):** Detects surface signals from message patterns -- urgency markers (\"asap\", \"blocking\"), explicit emotions (\"frustrated\", \"awesome\"), correction frequency, question rate, session duration, time of day. Produces focus/emotion/load/urgency/energy dimensions.\n\n**Layer 2 -- LLM reasoning (every 3 turns, background):** A Haiku-powered background assessment analyzes the last 10 messages for what the rules miss -- sarcasm, passive aggression, implicit goal shifts, whether \"this is fine\" means acceptance or resignation, and whether the conversation is progressing or going in circles. Runs via `runForkedAgent` in parallel with the main response (zero added latency). Results merge into the system prompt on the next turn.\n\nThe combined state appears in the system prompt as \"Current User State\" with response guidance (e.g., \"Be concise and action-oriented\" when urgency is high, \"Acknowledge the difficulty\" when frustration is detected).\n\nTheory of Mind is one of 8 interconnected subsystems that make Nomos think like you, not just sound like you. See [docs/think-like-you.md](docs/think-like-you.md) for the full architecture: knowledge extraction, decision pattern learning, exemplar curation, shadow observation, calibration, personality DNA, and more.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eCross-Channel Identity Graph\u003c/strong\u003e\u003c/summary\u003e\n\nUnified contacts linking Slack ID, email, phone, Discord, and more into a single profile. Auto-linking heuristics merge contacts by display name, email, or user confirmation. Per-contact autonomy levels control how the clone handles outgoing messages:\n\n| Level    | Behavior                            |\n| -------- | ----------------------------------- |\n| `auto`   | Send immediately, no approval       |\n| `draft`  | Create draft for approval (default) |\n| `silent` | Observe only, don't respond         |\n\n```bash\nnomos contacts list                              # List all contacts\nnomos contacts link \u003cid\u003e slack U12345678         # Link identity\nnomos contacts merge \u003cid1\u003e \u003cid2\u003e                 # Merge contacts\n```\n\nSee [docs/contacts.md](docs/contacts.md) for full details.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eCATE Protocol (Agent-to-Agent Trust)\u003c/strong\u003e\u003c/summary\u003e\n\nSecure agent-to-agent communication via the Consumer Agent Trust Envelope protocol. Built on `@project-nomos/cate-sdk` — a standalone, open-source library.\n\n- **DID-based identity** — Ed25519 key pairs with `did:key` identifiers\n- **Verifiable Credentials** — \"Acts-for\" VCs prove the agent acts on behalf of the user\n- **Policy engine** — Per-intent rules: allow personal, require approval for transactional, require stamps for promotional\n- **Anti-spam stamps** — Proof-of-work or micropayment stamps for unsolicited messages\n- **Signed Agent Cards** — A2A-compatible discovery format\n\nThe CATE server starts automatically with the daemon on port 8801.\n\nSee [docs/cate-protocol.md](docs/cate-protocol.md) for full details.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eProactive Agency\u003c/strong\u003e\u003c/summary\u003e\n\nBeyond reactive responses — the clone tracks commitments, generates pre-meeting briefs, and triages across channels.\n\n- **Commitment tracking** — Extracts \"I'll do X by Y\" from conversations, tracks deadlines, sends reminders\n- **Meeting briefs** — Before meetings, looks up attendees in the identity graph, retrieves recent conversations, generates context\n- **Priority triage** — Aggregates unread across channels, ranks by sender importance and urgency\n\n\u003c/details\u003e\n\n---\n\n## Features in Depth\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eMemory \u0026 Adaptive Learning\u003c/strong\u003e\u003c/summary\u003e\n\n### Persistent Vector Memory\n\nEvery conversation is automatically indexed into a PostgreSQL-backed vector store. When the agent needs context from a past interaction — even one that happened in a different channel weeks ago — it finds it.\n\nUnder the hood: **pgvector** with hybrid retrieval (vector cosine similarity + full-text search, fused via RRF). Embeddings via Vertex AI `gemini-embedding-001` (768 dims). Falls back to FTS when embeddings aren't available.\n\n### Adaptive Memory \u0026 User Model\n\nWhen enabled (`NOMOS_ADAPTIVE_MEMORY=true`), the agent extracts structured knowledge from every conversation — facts, preferences, and corrections — using a lightweight LLM call (Haiku by default). Extracted knowledge accumulates into a persistent **user model** that personalizes responses across sessions.\n\n- **Knowledge extraction** — facts about you, your projects, tech stack; preferences for coding style, communication, tools\n- **Confidence-weighted** — repeated confirmations increase confidence; contradictions decrease it\n- **Prompt injection** — high-confidence entries (\u003e=0.6) are auto-injected into the system prompt\n\n### Auto-Dream Memory Consolidation\n\nBackground memory consolidation triggered by time (1hr) and turn count (10) gates. Uses lock-file coordination to prevent concurrent runs. Four-phase consolidation: Orient → Gather → Consolidate → Prune.\n\n### Magic Docs\n\nMarkdown files with a `\u003c!-- MAGIC DOC: title --\u003e` marker are automatically kept up-to-date. When the system detects a magic doc is stale, a background forked agent reads the codebase and refreshes the document in place.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eMulti-Agent Teams \u0026 Smart Routing\u003c/strong\u003e\u003c/summary\u003e\n\n### Multi-Agent Teams\n\nA coordinator agent decomposes complex tasks, spawns parallel workers via independent `runSession()` calls, collects results with `Promise.allSettled()`, and synthesizes a final response. Workers share MCP servers and permissions but get scoped system prompts. Triggered by `/team` prefix.\n\n### Smart Model Routing\n\nRoute queries to the right model automatically based on complexity. Works with **any provider** — Anthropic, OpenRouter, Ollama, or your own endpoint:\n\n- **Simple** (greetings, short questions) → fast, cheap model (e.g. `claude-haiku-4-5`, `llama3`)\n- **Moderate** (general tasks) → balanced model (e.g. `claude-sonnet-4-6`, `mistral-large`)\n- **Complex** (coding, reasoning, multi-step) → most capable model (e.g. `claude-opus-4-6`, `deepseek-r1`)\n\nEnable with `NOMOS_SMART_ROUTING=true`.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eImage \u0026 Video Generation\u003c/strong\u003e\u003c/summary\u003e\n\nBuilt-in image generation via Gemini and video generation via Veo. Conversational — just describe what you want. Supports style presets, aspect ratios, and iterative refinement. Enable with `NOMOS_IMAGE_GENERATION=true` and/or `NOMOS_VIDEO_GENERATION=true` plus a `GEMINI_API_KEY`.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eSelf-Improvement\u003c/strong\u003e\u003c/summary\u003e\n\nNomos has a built-in `self-improve` skill that lets it analyze its own codebase, implement changes, and open pull requests to itself — all autonomously.\n\n1. Clones a fresh copy of its own repo (never modifies the running instance)\n2. Analyzes the codebase and implements the requested change\n3. Runs all checks (`pnpm check`, `pnpm test`, `pnpm build`)\n4. Opens a PR for your review\n\nJust say _\"improve yourself\"_, _\"add tests for the chunker\"_, or _\"fix your session cleanup logic\"_.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eAPI Providers\u003c/strong\u003e\u003c/summary\u003e\n\n| Provider                | Description                       | Guide                                            |\n| ----------------------- | --------------------------------- | ------------------------------------------------ |\n| **Anthropic** (default) | Direct Anthropic API              | Set `ANTHROPIC_API_KEY`                          |\n| **Vertex AI**           | Google Cloud Vertex AI            | Set `CLAUDE_CODE_USE_VERTEX=1` + GCP credentials |\n| **OpenRouter**          | Anthropic models via OpenRouter   | [Setup guide](docs/integrations/openrouter.md)   |\n| **Ollama**              | Local models via LiteLLM proxy    | [Setup guide](docs/integrations/ollama.md)       |\n| **Custom**              | Any Anthropic-compatible endpoint | Set `ANTHROPIC_BASE_URL`                         |\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eWeb Dashboard \u0026 Settings UI\u003c/strong\u003e\u003c/summary\u003e\n\nA full Next.js app for onboarding, assistant configuration, channel management, and advanced settings — no YAML editing required.\n\n| Route              | Description                                                                       |\n| ------------------ | --------------------------------------------------------------------------------- |\n| `/setup`           | 6-step onboarding wizard (database, API, personality, channels, data sync, ready) |\n| `/dashboard`       | Overview: assistant status, model, active channels, memory stats, quick actions   |\n| `/settings`        | Assistant identity, API config, model, advanced settings                          |\n| `/integrations`    | Channel overview and per-platform configuration (incl. email)                     |\n| `/admin/database`  | Database connection and migration status                                          |\n| `/admin/memory`    | Memory store stats and management                                                 |\n| `/admin/costs`     | Session cost tracking and per-model usage breakdown                               |\n| `/admin/context`   | Context window visualization with token budget breakdown                          |\n| `/admin/ingestion` | Data ingestion dashboard: sync status, counts, trigger sync, delta toggle         |\n| `/admin/contacts`  | Contact management: identities, autonomy levels, merge/split                      |\n| `/admin/proactive` | Proactive features: commitments, triage, meeting briefs                           |\n\n```bash\nnomos settings              # Start standalone on http://localhost:3456\nnomos settings --port 4000  # Custom port\n# Note: Settings UI also starts automatically with the daemon\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eBrowser Automation, Tasks, Hooks \u0026 More\u003c/strong\u003e\u003c/summary\u003e\n\n- **Browser automation** — Playwright-based with persistent sessions across tool calls\n- **Task state machine** — lifecycle tracking with dependency graphs, auto-unblock, and cancellation\n- **Sleep \u0026 self-resume** — agents pause and wake with a prompt for polling, monitoring, and async waits\n- **Plan mode** — agent proposes structured plans for review before making changes\n- **LSP code intelligence** — go-to-definition, find-references, hover, document symbols via TypeScript LSP\n- **Event hooks** — command, HTTP, or prompt hooks on tool use, lifecycle, and compaction events\n- **Cost tracking** — per-model pricing tiers, session cost summaries, usage breakdown in CLI and web dashboard\n- **Context visualization** — see how your context window is used (system prompt, conversation, tools, memory, skills)\n- **Bash safety analysis** — detects destructive commands, dangerous flags, elevated privileges before execution\n- **Proactive messaging** — send outbound messages to any channel outside the reply flow\n- **Adaptive retry** — exponential backoff with jitter, retry-after headers, persistent mode for daemon\n- **Tool result deduplication** — SHA-256 hashing to deduplicate large tool results across turns\n- **Prompt cache break detection** — logs warnings when system prompt changes would invalidate caches\n- **Digital marketing suite** — Google Ads + Analytics via MCP\n- **Slack User Mode** — act as you: draft responses for approval, then send as authenticated user\n- **Cron / scheduled tasks** — run prompts on a schedule with configurable delivery modes\n- **30+ slash commands** — model switching, memory search, session management, and more\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eConfiguration Reference\u003c/strong\u003e\u003c/summary\u003e\n\nConfiguration is loaded with the following precedence: **Database \u003e environment variables \u003e hardcoded defaults**. Environment variables are loaded from `~/.nomos/.env` (primary) and `.env` in the current directory (fallback). API keys and secrets are stored encrypted (AES-256-GCM) in the `integrations` table.\n\n### Required\n\n| Variable       | Description                                       | Default |\n| -------------- | ------------------------------------------------- | ------- |\n| `DATABASE_URL` | PostgreSQL connection string (must have pgvector) | --      |\n\n### Provider (set one)\n\n| Variable                 | Description                             | Default |\n| ------------------------ | --------------------------------------- | ------- |\n| `ANTHROPIC_API_KEY`      | Anthropic direct API key                | --      |\n| `CLAUDE_CODE_USE_VERTEX` | Set to `1` to use Vertex AI             | --      |\n| `GOOGLE_CLOUD_PROJECT`   | Google Cloud project ID (for Vertex AI) | --      |\n| `CLOUD_ML_REGION`        | Vertex AI region                        | --      |\n\n### Model and behavior\n\n| Variable                 | Description                                                                   | Default             |\n| ------------------------ | ----------------------------------------------------------------------------- | ------------------- |\n| `NOMOS_MODEL`            | Default Claude model                                                          | `claude-sonnet-4-6` |\n| `NOMOS_PERMISSION_MODE`  | Tool permission mode (default, acceptEdits, plan, dontAsk, bypassPermissions) | `acceptEdits`       |\n| `NOMOS_SMART_ROUTING`    | Enable complexity-based model routing                                         | `false`             |\n| `NOMOS_TEAM_MODE`        | Enable multi-agent team orchestration                                         | `false`             |\n| `NOMOS_MAX_TEAM_WORKERS` | Max parallel workers in team mode                                             | `3`                 |\n| `NOMOS_ADAPTIVE_MEMORY`  | Enable knowledge extraction and user model learning                           | `false`             |\n| `NOMOS_IMAGE_GENERATION` | Enable image generation via Gemini                                            | `false`             |\n| `GEMINI_API_KEY`         | Gemini API key (shared by image and video generation)                         | --                  |\n| `NOMOS_VIDEO_GENERATION` | Enable video generation via Veo                                               | `false`             |\n| `ANTHROPIC_BASE_URL`     | Custom Anthropic API base URL (Ollama, LiteLLM, etc.)                         | --                  |\n\n### Channel integrations\n\n| Variable                  | Description                                                                      | Default   |\n| ------------------------- | -------------------------------------------------------------------------------- | --------- |\n| `SLACK_BOT_TOKEN`         | Slack Bot User OAuth Token                                                       | --        |\n| `SLACK_APP_TOKEN`         | Slack App-Level Token (Socket Mode)                                              | --        |\n| `DISCORD_BOT_TOKEN`       | Discord bot token                                                                | --        |\n| `TELEGRAM_BOT_TOKEN`      | Telegram bot token from @BotFather                                               | --        |\n| `WHATSAPP_ENABLED`        | Set to `true` to enable WhatsApp                                                 | --        |\n| `IMESSAGE_ENABLED`        | Set to `true` to enable Messages.app (requires `brew install steipete/tap/imsg`) | --        |\n| `IMESSAGE_FEATURE_MODE`   | `basic` (default, no setup) or `advanced` (requires SIP disabled)                | `basic`   |\n| `IMESSAGE_AGENT_MODE`     | `passive` (draft) or `agent` (direct)                                            | `passive` |\n| `IMESSAGE_OWNER_PHONE`    | Owner phone for agent mode                                                       | --        |\n| `IMESSAGE_OWNER_APPLE_ID` | Owner Apple ID for agent mode                                                    | --        |\n\nEmail is configured via the Settings UI (`/integrations/email`) or the `integrations` table (IMAP/SMTP host, port, credentials).\n\nSee `.env.example` for the complete list of all configuration options.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eSlash Commands\u003c/strong\u003e\u003c/summary\u003e\n\n| Command                       | Description                                                 |\n| ----------------------------- | ----------------------------------------------------------- |\n| `/clear`                      | Clear conversation context                                  |\n| `/compact`                    | Compact conversation to reduce context usage                |\n| `/status`                     | Show system status overview                                 |\n| `/model \u003cname\u003e`               | Switch model                                                |\n| `/thinking \u003clevel\u003e`           | Set thinking level (off, minimal, low, medium, high, max)   |\n| `/profile set \u003ckey\u003e \u003cvalue\u003e`  | Set profile field (name, timezone, workspace, instructions) |\n| `/identity set \u003ckey\u003e \u003cvalue\u003e` | Set agent identity (name, emoji)                            |\n| `/skills`                     | List loaded skills                                          |\n| `/memory search \u003cquery\u003e`      | Search the vector memory                                    |\n| `/drafts`                     | List pending draft responses (Slack User Mode)              |\n| `/approve \u003cid\u003e`               | Approve a draft                                             |\n| `/config set \u003ckey\u003e \u003cvalue\u003e`   | Change a setting                                            |\n| `/tools`                      | List available tools                                        |\n| `/mcp`                        | List MCP servers                                            |\n| `/plugins`                    | List loaded plugins                                         |\n| `/quit`                       | Exit Nomos                                                  |\n\n\u003c/details\u003e\n\n---\n\n## Development\n\n```bash\npnpm dev                # Run in dev mode (tsx, no build needed)\npnpm build              # Build with tsdown -\u003e dist/index.js\npnpm typecheck          # TypeScript type check (tsc --noEmit)\npnpm test               # Run tests (vitest)\npnpm lint               # Lint (oxlint)\npnpm check              # Full check (format + typecheck + lint)\npnpm daemon:dev         # Run daemon in dev mode (tsx)\n```\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for development setup, architecture, code conventions, and how to submit pull requests.\n\n---\n\n## Contributing\n\nContributions are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup, testing, code conventions, and how to submit pull requests.\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fproject-nomos%2Fnomos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fproject-nomos%2Fnomos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fproject-nomos%2Fnomos/lists"}