orrery
NOTEDASHBOARD
danielarif26

orrery

Orrery — a local, private agent operating system. Every model and agent (Claude, Codex, Ollama, OmniRoute + any OpenAI-compatible gateway) orbiting one dashboard: goal mode, mastermind, kanban, content studio, a 3D memory galaxy over your Obsidian vault, and knowledge grounding. No API keys.

Orrery banner brass mechanical solar system

A local Agent Operating System

License Language Last Commit PRs Welcome

Quick start · What it does · Architecture · Security · Issues


🪐 Orrery — a local Agent Operating System

An orrery is a mechanical model of the solar system. This one models your AI: every model and agent orbiting one dashboard you control.

Orrery is a single-file-simple, local-first control room for AI agents. It runs on your machine, uses the logins you already pay for (no API keys handed around), and puts every engine, agent, and automation behind one screen — with a memory that compounds because it reads and writes your Obsidian vault.

No accounts. No cloud. No paywall. npm start and open a browser tab.


Why

Using AI today means juggling tabs — one for Claude, one for Codex, one for a local model, prompts scattered, nothing saved, your assistant starting from zero every session. Orrery collapses that into one dashboard where:

  • every model is one click away and swappable mid-task,
  • agents run in the background and report into one place,
  • everything they produce is saved, previewable, and fed back into memory,
  • and your Obsidian vault + knowledge graph ground every answer in your context.

Engines — bring your own logins, no API keys

Orrery never asks for or stores an Anthropic/OpenAI API key. Each engine authenticates itself:

TierEngineAuthBest for
Solclaude CLIyour Claude Code login (keychain)frontier reasoning & code
Terracodex CLIChatGPT OAuth (~/.codex)everyday driver, sandboxed
LunaOllamanone — local & freefast, private, zero-cost
Customany OpenAI-compatible gatewayyour key (stored locally, 0600)OmniRoute, OpenRouter, Groq, GLM, Kimi, MiniMax, vLLM…

OmniRoute & other gateways: Settings → Third-party APIs has one-click presets. Anything that speaks POST /v1/chat/completions (SSE streaming) works — point Orrery at your OmniRoute gateway and it routes through whatever free/paid models it fronts.

Launch Orrery from your own terminal so the claude/codex CLIs can read your login. Ollama and custom gateways work anywhere.

flowchart LR
    UI["Dashboard UI\n(public/, galaxy.js)"] -->|WebSocket + REST| Server["server.mjs\nExpress + WebSocket"]
    Server --> Engines["lib/engines.mjs"]
    Engines -->|Sol| Claude["claude CLI\n(keychain login)"]
    Engines -->|Terra| Codex["codex CLI\n(ChatGPT OAuth)"]
    Engines -->|Luna| Ollama["Ollama\n(local, free)"]
    Engines -->|Custom| Gateway["OpenAI-compatible gateway\n(OmniRoute, OpenRouter, ...)"]
    Server --> Knowledge["lib/knowledge.mjs"]
    Knowledge --> Vault["lib/vault.mjs\nObsidian vault"]
    Knowledge --> Graphify["lib/graphify.mjs\ngraphify graph"]
    Server --> Writeback["lib/writeback.mjs\nThe Loop"]
    Writeback --> Vault

What it does

  • 🛰️ Mission Control — streaming chat with any engine or named agent; a 🧠 Knowledge toggle grounds the reply in your vault + graph.
  • ◎ Mastermind — put one question to several models in parallel; compare answers side by side, then fuse the best.
  • ⟳ Goal Mode — hand it a goal and walk away. It loops in a sandboxed folder until the agent declares done; an optional judge model can verify each round.
  • ☰ Kanban — drop a card, hand it to an agent; cards move themselves through the board as the agent works.
  • ⏱ Routines — agents on a timer (daily news sweep, weekly audit, scheduled builds).
  • ▣ Builds — every file an agent generates, previewable in one click.
  • ✧ Agent Roster — 29 named specialists (orchestrator, judge, SEO office, video, content studio…). Click one to brief it.
  • ◈ Content Studio — faceless YouTube producer, X/Twitter composer, Reddit scout, blog publisher, viral radar, content factory, lead-gen, backlink outreach. Social agents draft only and emit the exact post command — nothing posts on its own.
  • ✦ Memory Galaxy — your Obsidian vault as a 3D star map: every note a star, every link a constellation, recent notes burning brightest. Drag to orbit, scroll to zoom, click a star to open the note.
  • ⌘ Knowledge — search your vault and graphify graphs side by side; the same retrieval grounds agents.
  • ♻️ The Loop — the compounding piece: when a goal completes, its outcome is written back into your vault as a structured note (frontmatter + tags + [[wikilinks]]), so the next session starts smarter. Plus a journal and self-authored SOPs.

Quick start

git clone https://github.com/danielarif26/orrery.git
cd orrery
npm install
npm start          # → http://localhost:4477

Open http://localhost:4477 in your browser.

  • Ollama (free tier): install from ollama.com, then ollama pull qwen2.5:7b-instruct (any model works).
  • Sol/Terra: log into the claude and/or codex CLIs, and start Orrery from that same terminal.
  • Custom gateway: Settings → Third-party APIs → pick a preset (OmniRoute/OpenRouter/…) or add your own.

Grounding in your notes (optional)

Point Orrery at an Obsidian vault (default ~/openrouter/ObsidianMind) and, if you use graphify, a graphify-out/graph.json. The Memory Galaxy, Knowledge search, and the 🧠 grounding toggle all read from them; The Loop writes back to them.


Architecture

server.mjs          Express + WebSocket · static UI · REST API · streaming chat
lib/engines.mjs     drivers: claude (stream-json), codex (exec --json),
                    ollama (HTTP), custom (OpenAI-compatible SSE) + concurrency cap
lib/goals.mjs       goal loop runner, per-goal sandbox dirs, run logs
lib/routines.mjs    timer-scheduled goals
lib/agents.mjs      the 29-agent roster (system prompts + engine + tools)
lib/memory.mjs      append-only JSONL event log + keyword graph
lib/vault.mjs       Obsidian vault → star map + full-text search
lib/graphify.mjs    knowledge-graph search (parses small graphs, ripgrep-scans large)
lib/knowledge.mjs   merges vault + graph into a grounding context pack
lib/writeback.mjs   The Loop — structured note write-back, journal, SOPs
public/             vanilla SPA (no build step) + galaxy.js (3D canvas star map)

No build step, no framework, no database. Plain Node + vanilla JS.


Security

Orrery acts with your CLI logins and can run autonomous agents, so it is locked to your machine:

  • Bound to 127.0.0.1 with a per-boot token injected into the served HTML; every API route and the WebSocket require it.
  • Host allowlist (blocks DNS-rebinding) and Origin check (blocks cross-site fetch/WebSocket), so a random web page you visit can't reach it.
  • Custom API keys live in data/engines-custom.json (0600, gitignored), are masked in every response, and are never written into a goal's files.
  • /workspace never serves goal metadata/logs/dotfiles and carries a strict CSP; AI-generated previews run sandboxed with no network.
  • CLI args are ---terminated (no flag injection); model ids are slug-validated; concurrent agent processes are capped (AGENTOS_MAX_CONCURRENT, default 6).

Auto-approve goals run the agent with permissions skipped inside the goal directory. For codex that's a real OS sandbox; for claude it is not — use codex or a container for untrusted autonomous work.

Do not expose the port to a network.


Notes & limits

  • The claude/codex tiers only work when Orrery is launched from a terminal where those CLIs are logged in.
  • The Ollama tier is chat-only (no file tools), so Ollama goals produce text, not files. For file-producing pipelines use Sol/Terra or a tool-capable gateway.
  • Social agents are draft-only by design — they read via the twitter/rdt/opencli CLIs (status in Settings → Channels) and hand you the post command.

Author

Orrery is mine — I'm S M Arifuzzaman, building it alongside client IT and web-dev work in Paris. I write about what I'm building at smarifuzzaman.online.

License

MIT. Built for people who want to own their AI stack instead of renting a dashboard.


Made by S M Arifuzzaman
🐦 X · 📸 Instagram · ▶️ YouTube (SecretAIHub)

Related

How to Install

  1. Download the dashboard markdown file from GitHub
  2. Drop it into your vault (anywhere)
  3. Install the Homepage plugin and point it at the file
  4. Enable any listed CSS snippets for the intended look

Stats

Stars

1

Forks

0

License

MIT

Last updated 23d ago

Categories

Tags

agentsaiautomationclaudedashboardllmlocal-firstobsidianollamaopenai