A self-improving, proactive agent.
It learns. It reaches out. It earns its keep.
Most agents sit there and wait for a prompt. OpenAGI runs as a daemon on your machine, picks up on the things you do over and over, and pings you with what it can take off your plate.
Website: openagi.sh · Install: curl -fsSL openagi.sh | sh · Source: github.com/Spshulem/openAGI
[Mon · 7:42 am]
↗ I noticed a morning routine.
For the past 5 weekdays you:
· check #incidents in Slack
· pull yesterday's deploys from GitHub
· draft a standup note
I can run this every morning at 7:30 am and have it waiting.
→ approved · saved as /morning-standup
[Mon · 2:31 pm]
↗ Prep for your 3 pm with Acme Corp.
4 tickets in last 30 days about CSV export limits.
Mentioned competitor "Vellum" last call.
Renewal in 6 weeks — expansion potential.
Brief drafted. Want me to open it?
That's the difference. Hermes Agent, OpenClaw, SwarmClaw, even cloud agents like Claude.ai and Operator sit dormant until you type something. OpenAGI is proactive — it runs as a daemon, reads your activity, and surfaces things on its own. The first hour you have it installed, it's already noticing patterns. The first week, it's drafting skills. By month two it's doing the boring half of your work without being asked.
Everything lives under ~/.openagi/ on your machine. No accounts. No telemetry. No cloud component. Bring your own LLM (OpenAI, Anthropic, Ollama).
Stronger reasoning and prediction alone aren't going to produce AGI. A system that can perform emergent tasks and interact with the world without intervention needs three things working together. OpenAGI is built around them.
The full thinking is in WHITEPAPER.md — a personal essay on why these three, why now, and how they map to the code. If you want the marketing-friendly version, keep scrolling. If you want the manifesto, read that.
A scrutinizer with direction but no fixed outcome, predictable in its logic, diverse in what it can evaluate, and capable of polarized verdicts. Today's reinforcement learning is monolithic — one objective, one right answer. Real environments are cyclical, diverse, and extreme, and that's what produces emergent intelligence. OpenAGI scores every incoming signal on seven axes (urgency / impact / novelty / repetition / risk / confidence / specificity) and decides one of five things: act, ask, watch, ignore, propagate. That decision drives everything downstream.
Short-term (RAM — what you need right now), medium-term (day-to-day), long-term Lava (durable truths reasoned from feeling, not logic). Memory decays. Repeated raw items get condensed into principles. Compression isn't a performance optimization — it's evolutionary pressure. Perfect memory is a curse, not a gift; a system that can't forget can't progress. Most LLMs only have RAM and long-term storage with nothing managing what flows where. OpenAGI manages it: durable JSONL+snapshot stores for each tier, a condenser that promotes/demotes, and a recall layer that reasons about fidelity, not just hits.
Specialization through division, not multiplication. When a task becomes repetitive or novel-but-high-risk, the system spawns a bounded specialist with its own scope, memory, and tools — and the main system goes on autopilot for that lane. Multiplying the agent 1:1 is cancerous (creates complexity without value); dividing creates depth without sprawl. Specialists that don't earn their keep get retired by the daily quality sweep. Whether you look at synapses, hierarchies, or companies, the goal is the same: specialize repetitive tasks, recover the cycles for the things that matter.
The three innovations above are the engine. The user-visible behavior that falls out of them:
- Proactive. The agent runs in the background, watches your activity (opt-in), and reaches out — "I noticed a routine," "Heads up," "I drafted a skill." It starts the conversation. Other local agents wait for prompts.
- Persistent. Conversations, corrections, and decisions stick across sessions. Corrections you make once never have to be made twice.
- Specialized over time. As your patterns become clear, OpenAGI propagates specialists — by month three, the boring half of your work is being handled by sub-agents that aren't asking you for input.
- Local + private. Everything lives under
~/.openagi/. No accounts, no telemetry, no cloud component. Bring your own LLM (OpenAI, Anthropic, anything that speaks the OpenAI Responses API).
The highlighted rows are the bet — Scrutiny, tiered Memory, Propagation, the corrections loop, and the proactive behavior they enable. Everything below the line is table stakes for any local-agent runtime now.
| OpenAGI | Hermes Agent | OpenClaw | SwarmClaw | Operator | Claude.ai | |
|---|---|---|---|---|---|---|
| local | local | local | local | cloud | cloud | |
| Directional Adaptive Scrutiny | ✅ | — | — | — | — | — |
| Tiered Memory (short / medium / Lava) | ✅ | — | — | — | — | — |
| Propagation — bounded specialists | ✅ auto-spawn | parallel only | — | manual org chart | — | — |
| Corrections lock in, never repeat | ✅ | — | — | — | — | — |
| Reaches out to you (proactive) | ✅ | — | — | — | — | — |
| Watches your work, learns patterns | ✅ | — | — | — | — | — |
| Auto-drafts skills from observed routines | ✅ | — | — | — | — | — |
| Runs on your machine | ✅ | ✅ | ✅ | ✅ | — | — |
| Your data never leaves | ✅ | ✅ | ✅ | ✅ | — | — |
| Bring your own LLM | ✅ any | ✅ 200+ | ✅ | ✅ 23+ | — | — |
| Persistent memory across sessions | ✅ tiered | ✅ FTS5 | ✅ markdown | ✅ durable | limited | limited |
| Multi-channel (SMS / Telegram / HTTP) | ✅ | ✅ | ✅ | dashboard only | — | — |
| MCP server support | ✅ | ✅ | ✅ | ✅ | some | — |
| Skills system | ✅ | ✅ | ✅ | ✅ reviewed | — | — |
| Cron / scheduled tasks | ✅ | ✅ | ✅ | ✅ | — | — |
| Source-available | ✅ | ✅ | ✅ | ✅ | — | — |
| No telemetry, no accounts | ✅ | ✅ | ✅ | ✅ | — | — |
The three direct competitors all sit in the local-first daemon space. Hermes Agent (NousResearch, 142k+ stars) is the current leader and absorbed OpenClaw via hermes claw migrate. OpenClaw (formerly Moltbot / Clawdbot) is the original daemon shape — messaging gateway + memory + skills. SwarmClaw is the newest, dashboard-first multi-agent runtime with manually-configured org charts of persistent agents that delegate to each other. All three are answer-machines: you start every conversation. They handle propagation differently — Hermes spawns parallel subagents per turn, SwarmClaw uses manually-configured org charts, OpenAGI auto-spawns persistent specialists when Scrutiny decides the task warrants one. Cloud agents (Operator, Claude.ai) sit dormant too. The hard problem in agents isn't running locally; it's a system that scrutinizes signals, manages memory at three fidelities, specializes through division, and locks in your corrections. Once those four loops are running, reaching out first isn't a feature you bolt on — it's what falls out.
If you want the long form on why these (and not, say, "more parameters") get you closer to AGI, read WHITEPAPER.md.
One command. Then leave it running. The proactive part needs time to watch.
Linux / Raspberry Pi / SBC:
curl -fsSL openagi.sh | shmacOS / from source:
git clone https://github.com/Spshulem/openAGI && cd openAGI && npm install && npm run serveDocker:
docker run -d --name openagi -p 43210:43210 -v openagi-data:/data ghcr.io/spshulem/openagi:latestOpen http://127.0.0.1:43210/. Drop in an OpenAI or Anthropic key in the wizard (or skip and run in deterministic mode while you poke around). That's all the setup — there's nothing else to configure to get the proactive value flowing.
| When | What you'll see |
|---|---|
| Right away | Chat UI, MCP tab, Skills tab, Memory tab, Activity tab. Tools like remember, recall, schedule_message already work. |
| After 1 chat | The agent remembers. Ask it later "what did we decide about X" — it knows. |
| First night (03:30 UTC) | Session miner runs across your chat history, clusters recurring intents, drafts skills you might want, drops them in the Suggested tab. |
| First night (02:30 UTC) | If you've enabled Mac screen capture, the pattern miner runs across your activity, finds repeating app sequences (e.g. "Slack → GitHub → Notion every 9am"), drafts a skill, surfaces it. |
| Each Mac notification | "OpenAGI learned a new skill" — click to review, accept with one click, and it's saved as a real SKILL.md the agent can run. |
| Ongoing | Schedule a prompt with schedule_message and OpenAGI texts/Telegrams you when it fires. |
The whole point is you don't sit there typing prompts. You install it, you go back to work, and it tells you what's worth doing.
All install paths end with a daemon listening on 127.0.0.1:43210 and a setup wizard at /setup.
curl -fsSL https://raw.githubusercontent.com/Spshulem/openAGI/main/scripts/install.sh | shAuto-detects Docker vs. native systemd, installs Node if missing, sets up the service, prints the wizard URL.
git clone https://github.com/Spshulem/openAGI && cd openAGI
npm install
npm run serve # http://127.0.0.1:43210/setupFor always-on:
npm run install-launchd # macOS — auto-start at login + auto-restart on crash
npm run install-systemd # Linux — same, via systemd (sudo for system-wide; pass 'user' for rootless)A SwiftUI menubar app that bundles Node + the runtime + Sparkle auto-update + screen capture + replay confirmation:
./scripts/build-mac-app.sh # unsigned local build
SIGN_IDENTITY="Developer ID Application: ..." \
NOTARIZE=1 DMG=1 \
AC_USERNAME=... AC_PASSWORD=... AC_TEAM_ID=... \
./scripts/build-mac-app.sh # signed, notarized .dmgOutput: build/OpenAGI.app (+ optional .dmg). See mac/README.md for Sparkle key setup, hardened-runtime entitlements, and release signing.
docker run -d --name openagi \
-p 43210:43210 -v openagi-data:/data \
ghcr.io/spshulem/openagi:latestMulti-arch image (linux/amd64 + linux/arm64). Or with compose:
cp .env.example .env
docker compose -f docker-compose.example.yml up -dnpm run update # auto-detects mode (docker/systemd/launchd/source) and updates in place
npm run install-update-timer # Linux: install a weekly auto-update timer (Sundays 04:00)For Docker, run Watchtower alongside the OpenAGI container. The Mac native .app updates via Sparkle automatically.
| Capability | Detail |
|---|---|
| Chat UI | / — sessions sidebar, message thread, tabs for Memory / Cron / Skills / MCP / Agents / Channels / Activity. SSE event stream so the UI updates live. |
| Tool-use loop | When OPENAI_API_KEY or ANTHROPIC_API_KEY is set, the agent uses tool calling with structured args. Default model: gpt-5. |
| Internal tools | remember, recall, schedule_message, list_sessions, list_skills, run_skill, list_mcp_tools, run_mcp_tool, register_mcp_server, connect_mcp_server, disconnect_mcp_server, list_cron_jobs, cancel_cron_job, get_audit, get_budget, set_provider, retire_specialist, replay_skill. |
| Skills | Drop a SKILL.md (frontmatter + body) under .openagi/skills/<name>/ — it shows up as a first-class tool the agent can invoke. |
| Auto-skill mining | Pattern-miner runs nightly, detects repeating activity sequences, LLM proposes a skill, lands in .openagi/skills-suggested/ for one-click accept. Session-miner does the same on chat history. |
| Skill replay | Action vocabulary (open_app, keyboard_shortcut, applescript, shortcut, type, wait, say, browser, ...) — Mac executor confirms first run with a modal, persists trust. |
| MCP execution | Register stdio or HTTP+OAuth MCP servers in .openagi/mcp.json (or via the UI). On connect, every tool the server advertises becomes a callable agent tool (mcp_<server>_<tool>). |
| Cron prompts | The agent can call `schedule_message({prompt, delaySeconds |
| Telegram | Webhook (/channels/telegram/webhook) or long polling (TELEGRAM_POLLING=1). |
| Persistent state | All under .openagi/: memory (JSONL audit + atomic snapshot), cron jobs, agent/session store, specialist workspaces, MCP logs. |
The Credits dashboard tab shows today's LLM spend vs the daily cap (OPENAGI_DAILY_USD_LIMIT), totals broken down by activity (chat / autopilot / cron / overlay) and by model, a 30-day spend chart, and a per-call audit log — each row records time, model, activity type, agent, cost, and tools called, so you can see exactly what cost credits and why.
Ask the agent in chat via the recall_spend tool ("why did I spend $4 today?") — it reads the same ledger.
Data is a local rolling 30-day ledger at ~/.openagi/budget/ledger.jsonl. It stores cost + attribution only — no message content.
Once the daemon is running locally, you can reach it from anywhere via Telegram by pairing it with a public tunnel.
Full step-by-step including tunnel + auth + Telegram + launchd:
docs/setup/remote-channels.md. Quick version below.
npm run tunnel # cloudflared (preferred) or ngrok, auto-detectedCreate a bot via @BotFather, drop the token in ~/.openagi/.env:
TELEGRAM_BOT_TOKEN=...
TELEGRAM_POLLING=1 # or set up a webhook to /channels/telegram/webhook
TELEGRAM_WEBHOOK_SECRET=... # only if using webhooksOff by default. To enable on the macOS native app:
- Launch
OpenAGI.app. - Click the menu-bar icon → Capture → Enable capture.
- macOS prompts for Screen Recording + Accessibility permissions — grant once.
- Click Capture → Privacy settings… to tune frequency, retention, app/regex exclusions, and disk budget.
Once running:
- Every ~30 seconds the Mac batches activity (window titles + frame OCR) and pushes to the daemon's
/observationsendpoint. - Nightly at 02:30 UTC, the pattern miner clusters repeating sequences and asks the LLM to propose a skill name + description + body.
- Suggested skills land in
.openagi/skills-suggested/and surface in the dashboard's Skills → Suggested section. - Accept → writes a real
SKILL.md. If the skill includes areplay:block,replay_skillinvokes it (Mac shows a confirmation modal first run).
Privacy posture (non-negotiable):
- No keystroke logging
- No cloud sync — capture stays local
- Default-deny exclusion list: 1Password, Wallet, banking sites, private/incognito windows, 2FA / OTP screens
- One-click wipe in the privacy panel
Press ⌥Space (or click the tray icon → Quick Ask) to summon a small always-on-top pill that expands into an ask box over any app.
Screen context. On each ask, the widget does an on-device OCR grab of the focused window using the same ScreenCaptureKit pipeline as the pattern miner. The capture exclusion list applies — 1Password, banking sites, 2FA screens, and private windows are never read. Requires Screen Recording permission; without it, the ask still works but the panel shows "no screen context."
Proactive nudges. Suggestions from the agent's scrutiny layer surface as a badge on the pill. Open the nudge list to send it to chat or dismiss it.
Toggle. Enable or disable the whole feature from the tray via Enable Quick Ask (on by default).
Drop a config at .openagi/mcp.json:
{
"servers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"],
"trustLevel": "trusted"
},
"my-hosted": {
"url": "https://mcp.example.com/mcp",
"auth": "oauth",
"trustLevel": "trusted"
}
}
}Three transport+auth shapes are supported: stdio (spawn local process), http+bearer (URL with static API key), http+oauth (URL with browser-based OAuth — supports both dynamic registration and pre-registered clients).
For the bearer shape, reference your secrets via ~/.openagi/.env only — ${VAR} substitution is allowlisted to keys defined in that file (closes the env-var exfiltration class). Restart the daemon and click Connect in the MCP tab — or:
curl -s -X POST http://127.0.0.1:43210/mcp/connect/filesystem \
-H "authorization: Bearer $OPENAGI_AUTH_TOKEN"On connect, each MCP tool becomes a first-class agent tool (mcp_filesystem_read_file, etc.) and the model can call it directly.
Skills are markdown templates the agent can run as sub-prompts. Three are bundled (recap, morning-brief, remind). Add your own at .openagi/skills/<name>/SKILL.md:
---
name: weekly-review
description: Summarize the past 7 days of memory and propose 3 follow-ups.
replay:
- say: "Running your weekly review."
- applescript: |
tell application "Calendar" to activate
---
You are running a weekly review.
1. Call `recall` with query "this week" to pull recent items.
2. Group by tag, summarize each cluster in one bullet.
3. Propose three follow-ups the user should schedule.
User asked: {{input}}The skill becomes the skill_weekly_review tool and is also runnable from the UI's Skills tab. The replay: block (optional) makes it executable on the Mac via replay_skill with a confirmation modal.
Integrations are plug-in modules in src/integrations/<name>.js. Each one self-registers tools when its credentials are present in env, and silently no-ops otherwise. No keys live in source.
Bundled:
| Integration | Env | Tools | Use |
|---|---|---|---|
| Rize.io (time tracking) | RIZE_API_KEY |
rize_query, rize_today_summary, rize_recent_sessions |
"What did I work on today?" |
To add another (e.g. Toggl, Linear, GitHub via API), copy src/integrations/rize.js as a template:
export function registerYourIntegration(runtime, options = {}) {
const client = options.client ?? new YourClient(options);
if (!client.isConfigured()) return { registered: false, reason: "API key not set" };
runtime.tools.register({ name: "your_tool", parameters: {...}, handler: async (args) => client.something(args) });
return { registered: true };
}Then add one line to src/abi-runtime.js: registerYourIntegration(this);
For SaaS that ships an MCP server, you don't need an integration module — just point .openagi/mcp.json at it and the agent gets every tool automatically.
When OPENAGI_AUTH_TOKEN is unset, the dashboard runs unauthenticated (fine for 127.0.0.1 only). When set, every route except /health and the webhook endpoints requires:
- header
Authorization: Bearer <token>, or - a
?token=<token>query (browser convenience — sets a cookie, then redirects), or - the
openagi_tokencookie.
Generate a strong token:
node -e "console.log(require('node:crypto').randomBytes(32).toString('base64url'))"Webhooks self-validate instead:
- Twilio: when
TWILIO_AUTH_TOKENandOPENAGI_PUBLIC_URLare set, the daemon verifies theX-Twilio-SignatureHMAC against the incoming form body. - Telegram: set
TELEGRAM_WEBHOOK_SECRETand pass the same value assecret_tokentosetWebhook— the daemon checks theX-Telegram-Bot-Api-Secret-Tokenheader.
Additional defenses:
- Cross-origin POST blocked — any browser request whose
Origindoesn't matchHostis rejected with 403, regardless of auth state. - MCP register hardening —
commandis allowlisted to known runners (npx,node,bun,deno,python3,uvx,docker); URL hosts may not be loopback / RFC1918 / link-local / cloud-metadata;${VAR}substitution is allowlisted to keys explicitly declared in~/.openagi/.env.
| Method | Path | Notes |
|---|---|---|
| GET | / |
Chat UI |
| GET | /health |
Runtime status |
| GET | /events |
SSE event stream |
| POST | /message |
Local channel message |
| GET | /sessions, /sessions/:id |
Conversation transcripts |
| GET | /memory |
Tiered memory snapshot |
| POST | /cron |
Create a job |
| DELETE | /cron/:id |
Remove a job |
| POST | /cron/:id/run |
Run a job now |
| GET | /skills |
List skills |
| POST | /skills/reload |
Re-scan skill directories |
| POST | /skills/:name/run |
Run a skill |
| POST | /skills/replay/:name |
Replay a skill on the Mac |
| GET | /mcp, /mcp/tools |
MCP server + tool inventory |
| POST | /mcp/register |
Register a server at runtime |
| POST | /mcp/connect/:name |
Spawn the server, fetch tools |
| POST | /mcp/disconnect/:name |
Kill it |
| POST | /mcp/call |
{server, tool, args} |
| POST | /observations |
Activity batch from Mac capture |
| GET | /observations/search |
Full-text search of observed activity |
| POST | /channels/twilio/webhook |
Twilio inbound SMS |
| POST | /channels/telegram/webhook |
Telegram inbound |
| POST | /channels/sms/send |
Twilio outbound ({to, text}) |
| POST | /tick |
Manually run due cron jobs |
See .env.example. All keys read from .env and ~/.openagi/.env (override the location with OPENAGI_DATA_DIR).
You set one base model for everything (OPENAI_MODEL / ANTHROPIC_MODEL). You do not need a top model for every internal job — the small, frequent background work (proactive observation, scrutiny judging, memory condensing, session mining, daily recaps) runs fine on a cheaper mini/nano model, which is where most of the spend hides. Tiering is opt-in: until you set a tier, every task stays on the base model.
Run openagi models to see the plan — which job runs on which model, why each is safe to shrink, and exactly what to set to start saving.
| Variable | What it does |
|---|---|
OPENAI_MODEL / ANTHROPIC_MODEL |
Base model — handles chat + autopilot (real reasoning). Default gpt-5 / claude-sonnet-4-6. |
OPENAI_MODEL_MINI / ANTHROPIC_MODEL_MINI |
Mini tier — memory condensing, session mining, daily recap. e.g. gpt-5-mini. |
OPENAI_MODEL_NANO / ANTHROPIC_MODEL_NANO |
Nano tier — proactive observer, scrutiny judges (short, very frequent). e.g. gpt-5-nano. |
OPENAI_MODEL_TASK_<JOB> |
Pin one job to an exact model (wins over its tier). Jobs: OBSERVER, SCRUTINY, CONDENSE, MINE, PLAN, CHAT, AUTOPILOT. |
Recommended starting point for OpenAI: OPENAI_MODEL=gpt-5, OPENAI_MODEL_MINI=gpt-5-mini, OPENAI_MODEL_NANO=gpt-5-nano. The ledger records the actual model each call used, so openagi status / /budget show where the money really goes.
The agent gains two tools — web_search and fetch_url — once at least one provider key is set. With no key configured, web_search returns a clear "no provider configured" error and fetch_url still works via a plain HTTP fetch.
| Variable | Provider |
|---|---|
EXA_API_KEY |
Exa (default first choice) |
TAVILY_API_KEY |
Tavily |
BRAVE_API_KEY |
Brave Search |
SERPAPI_API_KEY |
SerpApi |
FIRECRAWL_API_KEY |
Firecrawl |
PERPLEXITY_API_KEY |
Perplexity |
GOOGLE_API_KEY + GOOGLE_CSE_ID |
Google Custom Search (alternative to the above) |
WEB_SEARCH_PROVIDER — optional. Force a specific provider (exa, tavily, firecrawl, brave, perplexity, or serpapi). When unset the agent auto-selects the first configured provider in priority order exa → tavily → brave → serpapi → firecrawl → perplexity, falling back to the next on error.
Set BUILDBETTER_API_KEY, BUILDBETTER_USER_EMAIL, and BUILDBETTER_USER_NAME to enable the BuildBetter integration.
BUILDBETTER_INGEST_MODE controls what the integration ingests:
| Value | Behavior |
|---|---|
signals (default) |
Action items from calls become agent tasks |
transcripts |
Call transcripts are stored as searchable memory (queryable via recall_activity) |
both |
Both of the above |
npm testsrc/
abi-runtime.js orchestrates signals → scrutiny → memory → propagation
agent-host.js turn loop, threads tool registry into model provider
agent-store.js persistent agents and sessions
auth.js bearer/cookie auth + CSRF (cross-origin POST guard)
channels.js local + Telegram + Twilio (SMS) channels
cron-scheduler.js interval/dailyAt jobs (incl. the "prompt" job type)
directional-adaptive-scrutiny.js decision layer
hosted-interface.js HTTP server, SSE, chat UI
mcp-client.js stdio JSON-RPC MCP transport
mcp-http-client.js HTTP+bearer MCP transport
mcp-oauth.js HTTP+OAuth MCP transport (DCR + pre-registered)
mcp-registry.js config + live clients, tool exposure
memory-system.js short/medium/long tiers with decay
model-provider.js DeterministicModelProvider + OpenAI / Anthropic tool loops
observation-store.js SQLite FTS5 store for capture observations
pattern-miner.js cluster repeating activity → propose skills
session-miner.js cluster repeating chat intents → propose skills
propagation-controller.js bounded specialist creation
skills.js SKILL.md loader, exposes each skill as a tool
skill-replay.js replay parser + executor + trust persistence
tool-registry.js internal tools the agent can call
mac/Sources/OpenAGI/
AppDelegate.swift menubar lifecycle
TrayController.swift menu bar icon + status
DaemonController.swift Node bundle launcher + crash recovery
AppState.swift SSE client + dashboard window
Capture/ ScreenCaptureKit + Vision OCR pipeline
Replay/ SSE-driven action executor + confirmation modal
examples/
hosted-server.js entrypoint for `npm run serve`
abi-demo.js deterministic ABI signal demo
skills/ bundled starter skills
test/
abi-runtime.test.js
- Remote capture streaming (coming soon) — run the agent daemon on one machine (e.g. a home Mac mini) and stream screen captures + activity from any number of laptops/desktops to it. Foundation is already wired:
CaptureBridgePOSTs observations to/observationsover HTTP with bearer auth. What's left is a thin "capture-only" client mode that points at a remote daemon URL + a tunnel, plus per-source attribution so the agent can answer "what was I doing on the work laptop yesterday vs. the home Mac". Track indocs/ROADMAP.md. - HTTP / SSE MCP transport for a richer client capability than current stdio.
- Specialist routing — when a message matches a specialist's bounded scope, route to it instead of always
main. - Embeddings-backed memory search alongside the current keyword overlap.
- Per-channel delivery policies and retry queues.
- Sparkle release pipeline so the Mac
.appupdates automatically.
PolyForm Noncommercial License 1.0.0 — see LICENSE.
You can use, fork, run, and modify OpenAGI freely for personal, research, hobby, educational, government, and other noncommercial purposes. Commercial use (including using OpenAGI as part of a paid product or revenue-generating service) requires a separate license — open an issue or reach out if you want one.
openagi.sh · Issues · Docs
