orchy-ai

mcp
Guvenlik Denetimi
Uyari
Health Uyari
  • License — License: Apache-2.0
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 5 GitHub stars
Code Uyari
  • network request — Outbound network request in dashboard/js/app.mjs
  • network request — Outbound network request in dashboard/js/attach.mjs
  • network request — Outbound network request in dashboard/js/client.mjs
  • network request — Outbound network request in dashboard/js/clientcall.mjs
Permissions Gecti
  • Permissions — No dangerous permissions requested

Bu listing icin henuz AI raporu yok.

SUMMARY

Orchy: a local-first orchestrator for AI agents. Run Claude Code, Codex, OpenCode and Hermes agents across separate workspaces, each with its own accounts and apps through One. Approval gates, voice and a dashboard included.

README.md
Orchy, the pixel robot

Orchy

One chat box for all your AI agents: Orchy runs them on your own computer and asks you first.

License: Apache-2.0 Node 20+ Platforms: Windows, macOS, Linux PRs welcome

Quick start · How it works · Harnesses · Privacy · Docs

A 16-second loop: a task typed into Orchy, Jev's routing card picking the workspace, agent and model, an approval pop-up that waits for your OK before an email is sent, and the Live view with agents at work
Real screens from a clean install, using the dashboard's built-in sample data (?preview), shown in Orchy's 1-bit greys. Nothing in them is real and nothing was sent. The title and end cards are illustrations.

Quick start

git clone https://github.com/janmm97/orchy-ai
cd orchy-ai
npm run setup

That's it. Setup checks your tools, asks three questions, starts Orchy and opens the dashboard in your browser.

Rather not use a terminal? Open the launchers folder and double-click the one for your computer: Start Orchy.cmd (Windows), Start Orchy.command (macOS) or Start Orchy.sh (Linux). It runs setup too. Setup also puts that launcher in the Orchy folder, so from then on you double-click it to start Orchy.

⭐ Like it? Star Orchy so more people find it.  ·  🛠️ Want to help? PRs welcome: run npm test first and read docs/CONTRIBUTING.md.

🔌 Orchy now works with One. Your agents use Gmail, Slack, Notion, Stripe and 1000+ more apps through the One CLI.

What setup asks
  1. Voice? Talk to Orchy and call your agents. If yes, pick the service you have (ElevenLabs, Deepgram or both) and paste its key. If no, Orchy is chat only. Settings → Voice turns it on later.
  2. Jev? The routing model that picks the workspace, agent and model for each message. If yes, use a TypeSafe key, or another provider: OpenRouter, OpenCode Zen or Vercel AI Gateway. If no, Orchy matches each message by its words and the agent picks its own tools. Settings → "Use Jev?" changes it later.
  3. Scripts? Let agents run scripts on their own unless a script looks like a decision (recommended), or ask before every script.

Each key is checked once with its service and saved in .env on your PC. Keys are hidden as you type. Then Orchy starts and your browser opens the dashboard, where the setup guide walks you through adding a workspace, connecting apps and making your first agent. Run npm run setup again any time to change your answers, and npm start to start Orchy after that.

Prerequisites

  • Node.js 20 or newer.
  • Git, to clone the repository.
  • At least one harness CLI installed and signed in. Claude Code is recommended (see Supported harnesses).
  • The One CLI (one), so agents can use your apps. Setup offers to install it. See docs/ONE.md.
  • Optional: ffmpeg (with ffprobe), for thumbnails, video posters and playable copies in the file viewer. Without it every file still opens as is. Orchy finds it on your PATH, in the usual install folders (Homebrew, winget), or at FFMPEG_PATH in .env.

Keys

npm run setup asks for these. You can also put them in .env (see .env.example) or in Settings in the dashboard. All of them are optional.

Key What it unlocks Without it
TYPESAFE_API_KEY Jev from TypeSafe, the native model Another Jev provider if one is set, else your agent harness reads each message (slower), else keyword matching
OPENROUTER_API_KEY Jev through OpenRouter, as ~typesafe/jev-latest (a chat model answering Jev's questions) As above
AI_GATEWAY_API_KEY Jev through Vercel AI Gateway, as typesafe-ai/jev (native) As above
OPENCODE_API_KEY Jev through OpenCode Zen, as jev-1.13 (a chat model). OpenCode's free tier only works inside the OpenCode app As above
ELEVENLABS_API_KEY Orchy's spoken replies and voice calls with agents The browser's voice
DEEPGRAM_API_KEY Orchy's spoken replies with Deepgram (or the backup voice when both keys are set) The browser's voice
VOICE_PROVIDER Which service speaks: elevenlabs or deepgram ElevenLabs first, Deepgram as backup

JEV_PROVIDER picks one provider when several keys are set (typesafe, openrouter, vercel, opencode, or off). With Jev off, the harness you installed stands in: it answers Jev's routing questions (10 to 30 seconds a message, on that harness's own sign-in), and keyword matching is the last resort. The same harness answers when you talk to Orchy if Claude Code isn't installed: Codex or Hermes, without tools (it can't open files you attach; Claude Code can). ORCHY_BRAIN picks one (claude, codex, hermes) or off. VOICE_ENABLED=0 switches voice off: nothing speaks, nothing rings, and nothing goes to ElevenLabs or Deepgram.

What Orchy is

Orchy is a local AI-agent orchestrator. You tell Orchy what you need, by text or voice. A small routing model (Jev, made by TypeSafe, a separate company with no affiliation to Orchy) picks the workspace, the agent and the model. The work runs in that workspace, under that workspace's own account, using a coding-agent CLI (a "harness"). Orchy reports back and keeps a log of every finished task. It runs on your own machine, with a dashboard at http://localhost:8008.

Why Orchy? You keep one business or client per workspace, each with its own logins, so accounts never mix. Your agents use your real apps through One, and Orchy stops for your OK before anything outward-facing: sending, posting, deleting, spending.

Orchy's Live view: running agents on the left, the selected run's steps in the middle, and the files it made on the right
The Live view, with the dashboard's built-in sample data (?open=live&preview=live). Nothing in it is real.

✨ Highlights

  • 💬 Text or voice. Type a task, or talk to Orchy and call your agents. Voice is optional and off until you switch it on (ElevenLabs or Deepgram).
  • 🧭 Smart routing, optional. Jev picks the workspace, agent and model, and shows you its pick first. Without it, Orchy matches each message by its words.
  • 🧰 Bring your own harness. Claude Code, Codex, Hermes, Antigravity or Cursor, each signed in with the account you pick for that workspace, and every one held behind your approvals.
  • 🔌 Your real apps. Gmail, Slack, Notion, Stripe and 1000+ more through the One CLI.
  • ✋ Asks before it acts. Money, sending, calendar changes, deleting and sharing wait for your OK in the dashboard.
  • 🗂️ Workspaces that never mix. One folder per business or client, with its own logins, agents and instructions.
  • 🤝 Huddles and missions. Agents talk a task through together, or hand work along a chain of steps.
  • 📺 Live view and file viewer. Watch every run step by step and open what it made, right in the dashboard.
  • 🏠 Local only. The dashboard listens on 127.0.0.1 and takes changes only from a browser you paired.

📖 Contents

If you are an AI agent setting this up or working in this repo: read this first

[!IMPORTANT]
This applies to Claude Code, Codex, Cursor, Hermes, Antigravity and any other agent. Read this whole README before you change anything.

  • Never mix accounts. Each workspace runs under exactly one login per harness (claudeAccount, codexAccount and so on in orchestrator/config.json). accountCheck in orchestrator/lib/workspaces.mjs checks it before every run. Do not weaken it.
  • One login per workspace. Each workspace has its own One login (one init --auth browser --project, run inside that workspace folder). Never run a one action for one workspace from another workspace's folder. A workspace without its own login must not run one.
  • Workspaces live in workspaces/ (git-ignored). Each has its own CLAUDE.md / AGENTS.md. Read the one in the workspace you work in.
  • Do not weaken the safety files: orchestrator/lib/policy.mjs, orchestrator/lib/gate.mjs, the cross-site / Host / Origin check in orchestrator/server.mjs, the paired-browser check (orchestrator/lib/owner.mjs, and ownerOnly and FILE_READS in orchestrator/server.mjs), the artifact path guard (resolveFile in orchestrator/lib/artifacts.mjs), the automatic retry gate (retryGate in orchestrator/lib/recover.mjs), the Cloudflare refusals and the Access token check in orchestrator/portal.mjs and orchestrator/lib/cfaccess.mjs, and the client sandbox (orchestrator/lib/clientspace.mjs, orchestrator/lib/clients.mjs).
  • Never commit secrets or machine state: .env, orchestrator/config.json, orchestrator/voice-agents.json, orchestrator/data/.
  • The dashboard API has no password login. It only answers its own origin on 127.0.0.1, and changes are only taken from a browser the owner paired. Keep it that way. Never bind it to another interface or put it behind a tunnel.
  • Ask the owner before anything outward-facing: sending, posting, deleting, charging, sharing.
  • One task, one folder. Files a task makes go in their own folder under the Tasks/ of the agent's home (<Department>/<call name>/Tasks/), or the workspace's Tasks/ in a workspace without departments.

How it works

flowchart TD
    you(["You: text or voice"]) --> jev["Jev picks the workspace, agent and model"]
    jev --> agent["The agent works in that workspace,<br/>under the workspace's own account"]
    agent --> one["One CLI runs its tool calls and actions<br/>in your apps: Gmail, Slack, Notion and 1000+ more"]
    agent --> mcp["External MCP servers you add<br/>in the dashboard's Connections"]
    one --> ok["It stops for your OK on decisions:<br/>sending, posting, deleting, spending"]
    mcp --> ok
    ok --> done(["It reports back: LOGS.md,<br/>plus a message or voice"])
The same flow as plain text
You (text or voice)
   |
   v
Jev picks the workspace, agent and model
   |
   v
The agent works in that workspace, under the workspace's own account
   |
   +--> One CLI runs its tool calls and actions in your apps
   |    (Gmail, Slack, Notion and 1000+ more)
   |
   +--> External MCP servers you add in the dashboard's Connections
   |
   v
It stops for your OK on decisions: sending, posting, deleting, spending
   |
   v
It reports back: LOGS.md, plus a message or voice

Type a task on the home screen. Jev shows a routing card (workspace, agent, model) and sends it after a short countdown, or waits for you when it is unsure.

A Jev routing card: the task, how sure Jev is about each workspace and agent, and the model it picked
A routing card, from the dashboard's sample data (?preview=route).

What leaves your machine

Orchy runs on your PC, but these services see some of your data when you use them:

  • The Jev provider (TypeSafe, OpenRouter, Vercel AI Gateway or OpenCode Zen): each instruction you type, plus the names and descriptions of your workspaces and agents, so Jev can route it. Without a Jev key, routing stays on your PC.
  • Your harness (Claude Code, Codex and so on): everything the agent works on, under that workspace's own account, as it would if you ran the harness yourself.
  • One: the app actions your agents run, under that workspace's One login.
  • ElevenLabs (only with voice on): your agents' names, roles and instructions (each gets a voice agent), what Orchy says aloud, and the audio of voice calls.
  • Deepgram (only with voice on): what Orchy says aloud, when it is the voice in use.
  • Cloudflare: client pages, if you put them online.

Orchy does not send anything to its authors.

Security

  • Local only. The dashboard answers only its own origin on 127.0.0.1. It has no password login, so it must never be bound to another interface or put behind a tunnel, and it refuses Cloudflare traffic.
  • Paired browsers. Only a paired browser can make changes in Orchy (send tasks, answer approvals, change settings). See Pairing under First run.
  • An approval gate on every harness. Agents do routine work alone and stop for decisions: money, sending, calendar changes, deleting, sharing. The full rules are under Approval gate and policy.
  • Accounts never mix. Every run is checked against the workspace's own harness login before it starts, and each workspace has its own One login.
  • Every harness asks first. Claude Code and Codex send their own approval requests to Orchy. Hermes, Antigravity and Cursor go through hooks Orchy writes into each run. See Supported harnesses.
  • Never tunnel port 8008. The dashboard refuses Cloudflare traffic. Only client pages (port 8009) go online, through a Cloudflare Tunnel with Cloudflare Access.

Report security problems privately: see SECURITY.md.

First run

The dashboard's setup guide has seven steps:

  1. You. Tell Orchy your name and time zone.
  2. Tools. Orchy checks that Node, a harness CLI and the One CLI are installed.
  3. Keys. Add the optional keys, or skip them.
  4. First workspace. Workspaces, then Add. Name it, say what it is for, pick its harness and account. Orchy creates the folder under workspaces/.
  5. Sign in to One. Workspaces, open the workspace, "Sign in to One". See docs/ONE.md.
  6. First app. Connections, the workspace, "Add app".
  7. First agent. Ask the AI Agent Builder for an agent and choose which apps it gets.

Pairing. Only a paired browser can make changes in Orchy (send tasks, answer approvals, change settings). Orchy pairs the browser it opens for you. Another browser shows a "Pair this browser" window: type the code from the terminal where Orchy is running, or make one on a paired browser in Settings → This browser. This keeps the agents running on your PC from making changes in your name.

Then type a task on the home screen.

Orchy's home screen on a fresh install: the robot mascot, a Set up Orchy button and the task box
The home screen on a fresh install.

Getting started with One

Orchy works with One.

One connects agents to third-party apps. Orchy uses its CLI for every app connection. The short version is in docs/ONE.md. The same text is shown in the terminal and the dashboard.

  1. Create a One account at https://app.withone.ai/sign-in.
  2. Use one One organization per business or client. The organization switcher is at the top left of the One dashboard.
  3. In Orchy: Workspaces, open the workspace, "Sign in to One". It runs one init --auth browser --project in that workspace folder. Choose the organization this workspace should use when One asks. The login is saved for that folder only.
  4. Connected apps are listed on the "Connected Apps" page in the One dashboard (left sidebar). "Add new app" connects one.
  5. In Orchy: Connections, the workspace, "Add app". It runs one connection add <app> and opens the app's sign-in page.
  6. If an app is not available, switch it on in the One dashboard: Developers (bottom left), "Embeddable Auth" tab, search the tool, turn on "Visible". Full steps are in docs/ONE.md.
  7. The AI Agent Builder asks which connections each agent gets, Read or Full. Changes to agents need your approval.

Core ideas

The short version. Every detail is in docs/CONCEPTS.md.

Idea In one line
🗂️ Workspaces A folder in workspaces/ for one business or client, with its own harness account, One login, agents and CLAUDE.md / AGENTS.md. Shown as "Acme Workspace".
🏢 Departments, agent homes and Resources A workspace is laid out like a company: department folders, one home per agent with its Tasks/, and Resources/ for every skill, MCP server copy and CLI note.
🤖 Agents A Markdown file (.claude/agents/<name>.md) with a name, a role, instructions and the apps it may use.
🛠️ AI Agent Builder Every workspace has one. It researches the role, writes new agents and asks which connections each gets. Changes need your approval.
🔑 MCP sign-in Remote MCP servers that sign in with an account get a Sign in button; the token stays in Orchy's data folder, never in a workspace.
👥 Department heads and delegation An agent with a team: list hands parts of a task to its team, one level deep, at most three at once.
🤝 Huddles Two or more agents talk a task through and push back on each other. Nothing is built until you approve their agreement.
🧩 Missions One ask that needs several agents in a row, planned as 2 to 6 steps you can change, swap or drop before it starts.
✋ Approval gate and policy Every harness approval request goes through gate.mjs and policy.mjs: routine work runs, decisions wait for you.
⏳ Run queue and usage limits At most three agents per account at once by default; a run that hits a usage limit pauses and resumes by itself.
📡 Live run events Every step is streamed to the dashboard and kept on disk, with secrets blanked first.
💲 Usage and cost Tokens and cost per run, and a weekly review that suggests savings.
📁 Artifacts Every file an agent writes is registered, so you can open it in the dashboard.
✅ Orchy checks the result Before reporting, Orchy checks that "done" holds up. It flags, never re-runs on its own.
🔁 Recovery Failed runs say why. Read-only runs that failed on the engine or network retry by themselves; anything else asks you.
📺 Live view LIVE in the top bar: Activity, Work and Output columns. On a phone they become tabs.
🖼️ File viewer One viewer for images, video, audio, PDFs, Markdown, code, tables, Word and slides.
🪟 One window at a time Opening a page or an item takes the place of the one that's up. Decisions are never swapped away.
🕘 Scheduling schedule: weekdays 9:00 in an agent's frontmatter runs it by itself while Orchy is running.
🧵 Sessions Each conversation with Orchy has its own thread, memory and runs.
🌐 Client pages Share chosen agents with a client on their own page and sandbox.
🔧 Orchy fixing itself Tell Orchy what is broken; a "Fix Orchy" card always waits for your OK, and the report has an Undo. Runs on Claude Code: setup, the card or Settings → Accounts picks the account.

Client pages

Optional: share chosen agents with a client on their own page (port 8009), where they work in their own sandbox and never see the rest of Orchy.

Putting them online (Cloudflare Tunnel, Access, and R2 for video) is in docs/CONCEPTS.md → Client pages.

The Live view on a phone, with its columns as tabs
The Live view on a phone, with the dashboard's sample data.

Supported harnesses

Harness Install Gated?
Claude Code (recommended) curl -fsSL https://claude.ai/install.sh | bash; Windows (PowerShell): irm https://claude.ai/install.ps1 | iex ✅ yes
Codex curl -fsSL https://chatgpt.com/codex/install.sh | sh; Windows: powershell -ExecutionPolicy ByPass -c "irm https://chatgpt.com/codex/install.ps1 | iex" ✅ yes
Hermes curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash; on Windows (PowerShell) iex (irm https://hermes-agent.nousresearch.com/install.ps1) ✅ yes
Antigravity (off by default) curl -fsSL https://antigravity.google/cli/install.sh | bash; on Windows (PowerShell) irm https://antigravity.google/cli/install.ps1 | iex; then ORCHY_ANTIGRAVITY=1 in .env. Google doesn't support running agy from another app on personal plans (details) ✅ yes
Cursor curl https://cursor.com/install -fsS | bash; on Windows (PowerShell) irm 'https://cursor.com/install?win32=true' | iex; then sign in with agent login. No web search or web fetch in Orchy, and one sign-in for the whole computer, shared by every Cursor workspace (details) ✅ yes

OpenCode is no longer supported: OpenCode 2 can reach the internet without asking, and nothing switches that off (why). The OpenCode Zen Jev provider (OPENCODE_API_KEY) is a separate service and still works.

"Gated" means every risky action asks Orchy first. How far each one has been tested against its real program is in docs/HARNESSES.md. Hermes and Cursor offer the models their sign-in lists, and take any model id you type. You don't have to type these: Install in the dashboard (Add workspace, or Set up Orchy → Tools) runs the right one for your computer in a terminal window, then the sign-in. A harness whose program is there but won't start (an install that didn't finish) shows as won't start, with the command that fixes it.

Details, headless commands, config locations, the evidence behind each "gated" answer, which instructions an agent run reads and manual verification checklists are in docs/HARNESSES.md.

Platforms: Windows, macOS and Linux. Windows is the most tested (Hermes, Antigravity and Cursor were checked on Windows only); on macOS and Linux, report what breaks.

Sign-in, not API keys

Every harness signs in with your own account in the browser. You don't need an API key to run one.

  • Claude Code: claude auth login (your Claude plan).
  • Codex: codex login (your ChatGPT account).
  • Hermes: hermes portal, or hermes auth add <provider> --type oauth. When you add a Hermes workspace you pick This computer's Hermes sign-in (sign in once; every workspace set this way uses, and bills, that account) or Its own sign-in.
  • Antigravity: start agy once and sign in with your Google account. Google's FAQ says running agy inside another app isn't supported on personal Google plans. That's why it's off by default: ORCHY_ANTIGRAVITY=1 in .env turns it on.
  • Cursor: agent login.

API keys stay optional, for Jev routing and voice only (see Keys).

Troubleshooting

npm run check

This health check tests each workspace's accounts, the One CLI, Jev, voice, agents and client pages, and says what to fix. Do not remove the check.

Problem What to do
Orchy will not start Read the error in the terminal window it was started from. After Orchy restarted itself, it is in orchestrator/data/server.err.log.
The dashboard says it can't make changes The browser isn't paired: see Pairing under First run.
A workspace says it is not signed in to One Workspaces, the workspace, "Sign in to One".
A run is refused for an account mismatch The harness profile for that workspace is logged into the wrong account: sign in again with the right one.
A workspace "isn't logged in", but you signed in to the harness in a terminal A plain terminal signs in the computer's profile, not the workspace's. A Hermes workspace set to "This computer's sign-in" (the default) uses it on its own; one set to "Its own sign-in" needs Log in. For a Claude Code or Codex workspace with its own profile, press Log in on the workspace: the window it opens signs in that workspace's profile. Cursor has one sign-in for the whole computer: run agent login in any terminal. Then press Re-check.
A harness shows won't start Its install didn't finish. Press Install to install it again, or run the command shown next to it. Then press Re-check.
A Cursor task fails with "Orchy's .cursorignore is missing…" Run git checkout .cursorignore in the Orchy folder. That file keeps Orchy's own instructions out of Cursor runs.

Project structure

orchy-ai/
├── orchestrator/   the server (127.0.0.1:8008), client pages (:8009), the gate, harness adapters, scripts
├── dashboard/      the UI: plain ES modules, no build step
├── scripts/        setup.mjs (npm run setup)
├── launchers/      double-click launchers for Windows, macOS and Linux
├── docs/           ONE.md, HARNESSES.md, CONCEPTS.md, ARCHITECTURE.md, SECURITY.md, CONTRIBUTING.md
├── assets/         the logo and README images
└── workspaces/     your workspaces (git-ignored)

The full file map, with what each part does, is in docs/ARCHITECTURE.md.

Contributing

PRs are welcome. See CONTRIBUTING.md. Run npm test first (no network, no keys and no harness needed), and keep personal data out. Report security problems privately: see SECURITY.md.

License

Apache-2.0. See LICENSE and NOTICE.

Jev is made by TypeSafe, a separate company with no affiliation to Orchy.

Yorumlar (0)

Sonuc bulunamadi