{"slug": "show-hn-nova-open-source-ai-orchestrator-that-works-with-you", "title": "Show HN: Nova – open-source AI orchestrator that works with you", "summary": "Nova, a self-hosted open-source AI orchestrator with 24 specialist agents and an event-driven automation layer, launched under an MIT license. The platform runs on users' own model subscriptions and machines, features a two-phase approval gate for consequential actions, and supports Telegram, Slack, Discord, and terminal interfaces.", "body_md": "**A self-hosted AI team that runs your operation — and asks before it acts.**\n\nNova is a self-hosted, open-source AI platform: a team of 24 specialist agents plus an automation layer that reacts to events and runs the repeatable work in the background. You reach it from Telegram, Slack, Discord, or a terminal — or a webhook, a metric, or a connector event fires it — and it runs on your own model subscriptions and your own machine, with human approval where it matters.\n\n[ Website](https://mynova.space)\n·\n\n[·](https://mynova.space/docs/)\n\n**Documentation**[·](#quick-start)\n\n**Quick start**\n\n**MIT license**\n\n```\nmessage ──▶ channel ──▶ relay ──▶ orchestrator ──▶ planner\n  or        (Telegram/            │ classify         │ decompose into\n event       Slack/               │ (heuristic →     │ subtasks with\n (webhook,    Discord/            │  pattern cache → │ dependencies)\n  metric,     terminal)          │  LLM)            │\n  connector)                      ▼                  ▼\n                            agent-router ◀── 24 specialist agents\n                                  │\n                          prepare ──▶ approve ──▶ execute\n                          (safe)     (your gate)   (ships/spends/sends)\n```\n\n**Multi-agent, not a chatbot.** 24 specialist agents (marketing, ops, data, legal, and more — each just a markdown file). A message is classified cheaply, then answered directly, routed to one specialist, or decomposed into a dependency-ordered plan run across several. An optional distributed**executive board**(7 reasoning personas) can deliberate on strategic questions.** Event-driven, not just a chat bot.**A message is one trigger; a webhook, a metric crossing a threshold, a connector event, or a semantic match is another. Any of them can run an agent or a**playbook**(a reusable SOP), and** durable processes**carry multi-day work across waits and restarts. Nova runs the operation in the background, not only when you ask.** Two-phase execution + governance.**For interactive requests the safe half — research, drafts, generation — runs freely; then an inline** Approve / Revise / Cancel**gate; only after you approve does the consequential half — publish, send, spend — run. Autonomous paths (schedules, automations) are pre-authorized and governed by spending caps, role-based permissions, and content policies that can hard-block. Agents also earn autonomy over time (a per-category ladder).**Your models, your machine.** It drives the official vendor CLIs (Claude Code, Gemini, Codex) as subprocesses, so it runs on subscriptions you already pay for instead of metered API tokens — and it also supports any OpenAI-compatible API (OpenRouter, DeepSeek, xAI, local Ollama/vLLM). It does**not** reuse or extract tokens. Storage is local split SQLite; embeddings run locally (all-MiniLM-L6-v2, 384-dim). Your keys, your data. MIT licensed.\n\n**Core orchestration**\n\n- 24 specialist agents + task decomposition with dependency resolution and parallel execution\n- Two-phase approval gate + an earned-autonomy ladder (ask → notify → auto-within-caps)\n- Persistent memory (facts, goals, tasks) with local semantic recall\n**Knowledge base (RAG)**— feed it PDFs, docs, and URLs; retrieved across agents with citations, on personal / team / per-agent scopes- Multi-channel: Telegram (primary), Slack, Discord, terminal (\n`nova chat`\n\n/`nova connect`\n\n); WhatsApp per-user **Workboards**— boards of typed cards with stages you define: create one with`nova workboard create`\n\nor ask a specialist agent to put a set of results on a board (\"put these leads on a board\"); agents fill and move cards, you drag them across stages in the dashboard, and a stage can optionally queue a playbook or agent task when a card enters it, behind the same approval gate\n\n**Business automation**\n\n**Playbooks**— reusable, versioned, parameterized SOPs** Automations**— an event (webhook, metric, connector, or semantic match) runs an agent or playbook, with dedupe, rate limits, retries, and a dead-letter queue**Durable processes**— multi-day flows that wait for a timer or event and resume, surviving restarts** Document extraction**— schema → strict, type-checked JSON from PDFs/DOCX** Connectors**— two-way Stripe, Shopify, Zendesk, HubSpot (read + write)** Connected data**— query HTTP JSON/CSV, read-only SQLite, or a connector read action** ROI reporting**— tasks automated, hours saved, and value vs. cost\n\n**Governance & hardening**\n\n- Compliance policies — spend caps, approval routing, and PII/content checks that can\n**hard-block**(prevent execution even after approval) - Role-based permissions (capabilities) and out-of-office delegation\n- Exactly-once idempotency, advisory locks (no double-fire), and AES-256-GCM encrypted secrets\n\n**Foundations**\n\n- 13 MCP servers (Notion, Google Workspace, Playwright, Cloudflare, ClickUp, GoHighLevel, Firecrawl, Tavily, Exa, and more) — called via\n**mcp2cli**, where agents discover tools on demand instead of loading every schema into context - 45 skills (image/doc generation, research writing, and more) invoked by agents as needed\n- Scheduler + proactive services (morning briefings, smart check-ins)\n- Voice — inbound and outbound calls via Twilio; voice messages transcribed with Groq or local Whisper\n- A unified\n`nova`\n\nCLI and a web dashboard\n\nEvery incoming message is classified through three tiers, cheapest first:\n\n**Heuristic**— short, simple messages skip straight to the model (no classifier LLM call).** Pattern cache**— a request that matches a plan that worked before reuses it, skipping classification.** LLM classification**— only genuinely new, complex asks pay for a cheap classify call (simple / routed / complex).\n\nComplex requests are decomposed into subtasks with dependencies; independent branches run in\nparallel, each on a specialist agent with its own tools and MCP access. Consequential actions run\nin the **execute** phase, which waits for your approval (or runs under an earned autonomy grant with\na spending cap). Prepared artifacts — copy, images, files — flow from prepare into execute.\n\nNova connects to real accounts and can spend real money, so it's worth being precise about what protects you:\n\n**The approval gate is the default safety boundary — not a sandbox.** Sandboxed execution is**opt-in and off by default**: agent tools run unsandboxed on your host. A hardened Docker sandbox exists (`NOVA_SANDBOX_BACKEND=docker`\n\n) but is not the default, and if Docker isn't installed it**falls back to unsandboxed** with a warning. Run it as a dedicated user / on a VPS, and turn on the Docker sandbox if that matters to you.**\"Asks before it acts\" is about interactive requests.** Things you set up in advance to run on their own — scheduled tasks, automations, and durable-process steps — are**pre-authorized when you create them** and run without a fresh prompt each time (that's the point of automating). The controls on those autonomous paths are the earned-autonomy ladder with**spending caps** and the**hard-block** compliance policies (which stop execution even there).**It's young and solo-built.**~390 unit tests across the suite, but no end-to-end tests of the full automation chain yet, and it's a broad surface for one maintainer. The connector set is a starter four. Read the code before you trust it with the keys.\n\nOn top of the approval gate, four controls are **on by default**: least-privilege agent env\n(`NOVA_AGENT_ENV_STRICT`\n\n), an egress leak firewall that redacts/blocks secrets leaving the system\n(`NOVA_LEAK_FIREWALL`\n\n), an untrusted-input firewall that neutralizes tool/web/email content before\nit reaches an agent prompt (`NOVA_UNTRUSTED_FIREWALL`\n\n), and a dashboard that binds loopback-only\nunless `DASHBOARD_PASS`\n\nis set. Run `nova doctor --security`\n\nto grade your deployment.\n\n([Bun](https://bun.sh)`curl -fsSL https://bun.sh/install | bash`\n\n)- The\nCLI installed and authenticated (or another supported provider)[Claude Code](https://claude.ai/claude-code) - A\n**Telegram** account and a bot token from[@BotFather](https://t.me/BotFather)\n\n```\ncurl -fsSL https://mynova.space/install | bash\n```\n\nThat clones Nova to `~/nova`\n\n, installs anything missing (Bun, the Claude Code CLI), and launches a\nguided **setup wizard** (`nova init`\n\n) that connects Telegram and an AI provider — no file editing,\nand it can auto-detect your Telegram user ID. The wizard is resumable.\n\nPrefer to clone yourself?\n\n`git clone https://github.com/djbelieny/nova.git && cd nova && bash bootstrap.sh`\n\ndoes the same. Just checking prerequisites?`bash bootstrap.sh --check`\n\nreports what's installed and changes nothing.\n\n```\ngit clone https://github.com/djbelieny/nova.git\ncd nova\nbun run setup          # install deps, create .env\n# edit .env with your tokens/keys\nbun run test:telegram  # verify bot token\nbun run start          # start Nova\n```\n\nAfter setup, one `nova`\n\ncommand runs everything:\n\n```\nnova start                 # start the relay (main process)\nnova chat                  # talk to Nova in your terminal\nnova connect               # attach to a running Nova, with live activity + inline approvals\nnova dashboard             # web dashboard\nnova doctor                # health check\nnova init                  # (re-)run the setup wizard\n\n# capabilities\nnova kb add <file|url>     # feed the knowledge base\nnova playbook run <name>   # run a saved SOP\nnova automation add …      # event → workflow\nnova process | data | roi | extract   # processes, connected data, ROI, extraction\n\n# governance\nnova policy add …          # spend caps, approval routing, content checks\nnova access grant …        # role-based capability grants\nnova ooo set @teammate     # out-of-office delegation\nnova connector set …       # store connector secrets, encrypted at rest\n```\n\nThe underlying `bun run <script>`\n\nentry points still work; advanced scripts (`test:*`\n\n, `exec:*`\n\n)\nare exposed through `bun run`\n\n.\n\n```\nsrc/\n  relay.ts             # entry point — channels, coordination, service startup\n  orchestrator.ts      # classification, two-phase gate, autonomy ladder, hard-block\n  planner.ts           # task decomposition, parallel execution, artifacts\n  agent-router.ts      # agent catalog, tool/skill/MCP mapping, prompt construction\n  memory.ts            # intent tags, context injection\n  db.ts                # split SQLite + sqlite-vec, encrypted credentials\n  embeddings.ts        # local all-MiniLM-L6-v2\n  ai-provider.ts / ai-router.ts / provider-registry.ts   # subscription CLIs + OpenAI-compatible\n  knowledge.ts         # RAG knowledge base\n  playbooks.ts automation-engine.ts process-engine.ts    # automation suite\n  extraction.ts policy.ts roi.ts data-sources.ts\n  connectors/          # Stripe, Shopify, Zendesk, HubSpot\n  permissions.ts delegation.ts locks.ts                  # governance\n  mcp2cli.ts sandbox/  # MCP-via-CLI, opt-in Docker sandbox\n  channels/            # telegram, slack, discord, cli, whatsapp\n  providers/           # claude, gemini, codex, groq\n  cli.ts               # the unified `nova` command\nservices/              # task dispatcher, automation poller, proactive services\n.claude/agents/        # 24 specialist agents (+ executives/) as markdown\n.claude/skills/        # 45 skills\n```\n\n— every feature, command, and configuration option[mynova.space/docs](https://mynova.space/docs/)— guided setup walkthrough[SETUP.md](/djbelieny/nova/blob/main/SETUP.md)— deep technical reference[docs/ARCHITECTURE.md](/djbelieny/nova/blob/main/docs/ARCHITECTURE.md)— architecture & conventions[CLAUDE.md](/djbelieny/nova/blob/main/CLAUDE.md)— reporting vulnerabilities ·[SECURITY.md](/djbelieny/nova/blob/main/SECURITY.md)— how to contribute[CONTRIBUTING.md](/djbelieny/nova/blob/main/CONTRIBUTING.md)\n\nMIT — take it, customize it, make it yours.\n\nNova stands on a lot of other people's work. Each project below is used under its own license\n(full license texts ship in `node_modules`\n\n); thank you to their maintainers.\n\n**Runtime & AI**\n\n[Bun](https://bun.sh)— the runtime ·[TypeScript](https://www.typescriptlang.org)[sqlite-vec](https://github.com/asg017/sqlite-vec)— vector search inside SQLite[Transformers.js](https://www.npmjs.com/package/@huggingface/transformers)— local embeddings, running the[all-MiniLM-L6-v2](https://huggingface.co/sentence-transformers/all-MiniLM-L6-v2)model[Model Context Protocol SDK](https://www.npmjs.com/package/@modelcontextprotocol/sdk)— MCP**mcp2cli**— the MCP-to-CLI bridge Nova drives so agents call MCP tools from the shell instead of loading every schema into context[RTK — Rust Token Killer](https://github.com/rtk-ai/rtk)(Apache-2.0) — installed by`bootstrap.sh`\n\nand**on by default**; compresses the output of common dev commands (git, build, test, grep…) by 60–90% before it re-enters an agent's context. Nova routes its own shell through it and it's safe by design (unknown commands pass through unchanged). Disable with`NOVA_RTK=off`\n\n.\n\n**Channels & UI**\n\n[grammY](https://grammy.dev)(Telegram) ·[Bolt](https://www.npmjs.com/package/@slack/bolt)(Slack) ·[discord.js](https://discord.js.org)(Discord) ·[Ink](https://www.npmjs.com/package/ink)+[React](https://react.dev)(terminal & dashboard)\n\n**Documents & media**\n\n**Other**\n\nNova **runs on** the official vendor CLIs — [Claude Code](https://claude.ai/claude-code), the Gemini\nCLI, and Codex — driven as subprocesses under your own subscriptions. Those are proprietary tools,\nnot bundled with Nova.\n\nAnd it grew out of Goda's minimal [Claude Code Telegram Relay](https://github.com/godagoo) pattern —\nthe original \"run Claude Code as an always-on Telegram bot\" idea — since almost entirely rewritten\ninto the platform you see here.\n\nBuilt by [Jake Belieny](https://jakebelieny.com)", "url": "https://wpnews.pro/news/show-hn-nova-open-source-ai-orchestrator-that-works-with-you", "canonical_source": "https://github.com/djbelieny/nova", "published_at": "2026-07-23 12:30:36+00:00", "updated_at": "2026-07-23 12:52:58.370312+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools"], "entities": ["Nova", "Telegram", "Slack", "Discord", "OpenRouter", "DeepSeek", "xAI", "Ollama"], "alternates": {"html": "https://wpnews.pro/news/show-hn-nova-open-source-ai-orchestrator-that-works-with-you", "markdown": "https://wpnews.pro/news/show-hn-nova-open-source-ai-orchestrator-that-works-with-you.md", "text": "https://wpnews.pro/news/show-hn-nova-open-source-ai-orchestrator-that-works-with-you.txt", "jsonld": "https://wpnews.pro/news/show-hn-nova-open-source-ai-orchestrator-that-works-with-you.jsonld"}}