
AitherOS ADK
io.github.Aitherium由 GitHub 账号 Aitherium 发布v3.5.0更新于 Oct 24, 2026
Agent runtime with typed memory, knowledge and code graphs, plus file and web tools
概览
Aither ADK 是一个本地 Python 智能体运行时(SDK 加 CLI),为助手提供智能体循环、知识图谱记忆、文件与网页工具以及多智能体编队。
- 可以做什么
- 运行并对话基于 AitherAgent 接口构建的智能体,具备本地 SQLite 知识图谱记忆与关键词加语义混合检索
- 添加工具,包括来自自有 MCP 服务器和 Python 工具包的工具,并按难度等级在本地或云端模型后端之间路由调用
- 定义并部署可互相委派任务的智能体编队,通过内置 ask_agent 工具协作,并以兼容 OpenAI 的接口对外提供
- 在明确的工具白名单下,把任务委派给 Claude Code、Codex、Gemini、Aider 等外部编码智能体命令行工具
- 通过聊天渠道运行个人智能体,带审批、签名回执和可选的 Google 连接器
- 通过 ACP 对接编辑器、A2A 对接远程智能体,并用 MCP-UI 渲染块进行互操作
- 适用场景
- 适合希望在自己机器上构建、运行和编排自有 AI 智能体、让记忆与数据留在本地、并在不重写代码的情况下切换本地与云端推理的场景。也适合需要一个运行时来驱动多个编码智能体命令行工具或将智能体作为 API 提供的情况。
- 运行要求
- 以本地 Python 包形式运行(pip install awdk,命令为 adk),需在用户桌面环境安装。需要推理后端:带 vLLM 或 llama.cpp 的本地 GPU、可在 CPU 上运行的 Bonsai 模型,或 OPENAI_API_KEY、ANTHROPIC_API_KEY 等云服务密钥。AITHERIUM_API_KEY 对托管网关是可选的;AITHERIDENTITY_URL 仅在自建节点时需要。
安装
在 SourceWeft 中
- 打开 控制台中的 AitherOS ADK,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
Aither ADK — Build AI Agent Fleets
Docs · Source · pip install awdk · The Aither World
The Aither World is an operating system for agents — a Linux you can hand to one, the runtimes it works in, and the tools it works with. awnix is the Linux underneath it; awdk is one of its 69 bricks — each installs on its own, runs offline, and needs no account.
Start here: Point it at a backend you already pay for and run one agent loop.
[PyPI] [License: BSL 1.1] [Docs]
3 lines of code. Any backend. Local or cloud. Zero lock-in.
Aither ADK is a Python SDK + CLI for building AI agents that run on your hardware — a single helpful agent or a coordinated fleet that delegates work to each other. Agents get tools, persistent knowledge-graph memory, safety filtering, and effort-based model routing out of the box. Swap the LLM backend at runtime — your GPU, llama.cpp, or any cloud API — same code, same agents.
The package is awdk; the command is adk (awdk is the same command, and
python -m adk always works). Windows, "adk is not recognized"? pip put the
command in a Scripts folder that is not on PATH — its warning names the folder.
Add it once, then open a new terminal:
Get running in 60 seconds — pick your path
The no-Python one-liner — sets up an isolated environment (via uv) and launches the wizard:
Then, whichever path you took:
Using an AI coding agent (Claude Code, Cursor, Copilot)? Paste the Agent Setup Prompt into your session — it walks the agent through install, auth, inference, and the path from zero to fleet. There's also
llms.txt/llms-full.txtfor tools that ingest those.
Contents
- New here? The five concepts
- Documentation map — every guide, linked
- Subagents — drive Claude Code, Codex, and eight more — real binaries, scoped, torn down
- Quick Start
- Aither Hearth: your agent, on your phone — serve, channels, approvals, receipts
- Bonsai: an agent on literally anything
- Reasoning capture & code intelligence — external thinking, omp interop, DeepSeek Coder
- Setting Up Inference
- Building Agents
- Agent Fleets
- Agents & Packs
- CLI Reference
- The Aitherium ecosystem
- Environment Variables · Examples · License
New here? The five concepts
Everything in the ADK hangs off five ideas:
- Agent —
AitherAgent("aither"). One object:await agent.chat("...")is the whole API. It has a persona, tools, and memory. - Backend — where inference runs. Local (vLLM / llama.cpp / Bonsai) or cloud (Anthropic / OpenAI / DeepSeek / Aitherium gateway). Switchable at runtime, mid-session.
- Effort routing — every call carries a 1–10 effort level; cheap calls go to small fast models, hard calls go to the big reasoning model. Automatically. You never pick a model per call again.
- Memory — a local SQLite knowledge graph that auto-ingests entities and relations from every conversation. Hybrid keyword + semantic search. No external services.
- Fleet — multiple agents that can call each other via the built-in
ask_agenttool. One YAML file, oneadk-servecommand, and you have an orchestrator delegating to specialists.
If you only remember one thing: agent.chat() is the agent. Everything else is configuration.
Documentation map
Interoperability
Aither agents speak three protocols for seamless integration with external systems:
1. ACP (Agent Client Protocol) — IDE Integration
Connect your agent to JetBrains, Zed, VS Code, or any ACP-compatible editor over JSON-RPC 2.0 stdio.
- Harness ID:
acp(registered inadk.harnesses.registry) - Transport: STRUCTURED_BIDI (JSON-RPC 2.0)
- Usage: Agents appear as room participants in AitherShell, driven by editors that speak ACP v2
2. A2A (Agent-to-Agent) — Remote Agent Integration
Map remote A2A agents (Google A2A v0.3.0 compatible) as room participants with full task lifecycle visibility.
- Module:
adk.a2a_adapter.A2AAdapter - Events: Task lifecycle maps to AitherEvents (orchestration + cognition pillars)
- Flux codes:
a2a.s(submit),a2a.u(update),a2a.d(done) - Actor kind:
a2a— remote agents appear with their own identity in rooms
3. MCP-UI — Render Blocks as Resources
Serve agent-generated RenderBlocks (server-driven UI: tables, forms, charts, approval gates) via the MCP resource protocol using ui:// URIs.
- Module:
adk.mcp_ui_resources.RenderBlocksMCPServer - Block types: 24 primitives (markdown, header, table, code, form, approve, slider, file_upload, etc.)
- Schema validation: Block schemas are kept at parity with the AitherOS RenderBlocks protocol, so a block emitted here renders identically in any AitherOS surface
- MIME type:
application/vnd.aitheros.renderblocks+json - Integration: Mount into FastAPI, use in MCP clients that understand
ui://
The aw packages — three questions adk can ask about a repository
adk is the agent runtime; three small, independent packages give it the facts it would otherwise have to guess at. Each answers a different question, each installs on its own, and none of the three requires the others:
Used together, an agent can find a symptom with awgraph, check whether it is an
in-flight edit with awgit, and tell the agent already working that file with
awrelay — three questions a solo grep-and-guess loop cannot ask at all. The
failure they remove is not "the agent was wrong"; it is two agents editing the
same file without knowing, and a finding that died in a transcript nobody read.
Each publishes an aither-manifest.json beside its page, and each page renders
the others live from those manifests — a project whose manifest is missing shows
as unknown rather than silently disappearing:
awgraph ·
awgit ·
awrelay.
Subagents — drive Claude Code, Codex, and eight more
Just want it working? → AWSH-OMNISHELL-PLAYBOOK.md. Install → detect → start the daemon → use it, with verified output at each step. The step people miss is that the harness daemon has to be running: without it the desktop app reports "No harnesses reported by the daemon yet", which reads as a missing feature rather than a stopped process.
Your agent can delegate a task to another coding agent's real product — not a reimplementation of it against the raw API.
That distinction is the whole design. Rebuilding Claude Code's behaviour yourself
means inheriting none of its skills, hooks or account handling, and then chasing
a product that ships faster than you can track it. So the ADK resolves the real
binary on PATH (honouring PATHEXT, so the Windows .cmd shim works), runs it
headless with an explicit tool scope, feeds the prompt over stdin — never argv,
which is visible in the process table — gives each run its own config dir so
concurrent subagents can't corrupt one another's state, and tears down the
process tree on timeout.
adk shell harnesses on a typical box:
Ten harnesses are declared; the ones you haven't installed say so and tell you the command. It never silently pretends the world is Claude-only — a harness you don't have is a missing install, not a missing feature, and the difference is printed rather than guessed at.
Harnesses are data, not drivers
A per-agent runner does not scale — you end up with claude_runner.py,
codex_runner.py, gemini_runner.py, each drifting. So a harness is a row:
Four transports cover every agent CLI shipping today: structured-bidi (a
persistent bidirectional stream-json session), oneshot-per-turn (a fresh
process per turn), pty-stream (a real TTY behind a pseudo-terminal), and
http-stream (a remote agent over SSE). Adding an eleventh harness is a table
entry, not a new module.
Scoped by construction
A subagent is launched with an explicit allow-list, and the runner re-validates it fail-closed rather than trusting the caller:
The scope becomes --allowedTools on the real CLI, so a subagent asked to audit
code cannot write to your disk — enforced by the product you delegated to, not by
a prompt asking it nicely.
Quick Start
1. Set up inference (one command)
adk quickstart detects your hardware, pulls the right models, configures backends, and gets you chatting:
Either way you get the full harness: tools, skills, memory, and multi-agent coordination.
Want the full self-hosted, managed-agent experience (local LLM → customize a pack → enroll your machine → manage it from the portal)? See QUICKSTART_SELF_HOSTED.md —
adk onboard --quickdoes it in one command.
2. Your first agent
3. Grow into a fleet
The package ships one ready agent — aither, the orchestrator. Add specialists by
installing a ready-made pack, or by defining your own. Any agent can then call any other
through the built-in ask_agent tool.
4. Earn tokens by volunteering
Earn Aitherium tokens by contributing compute to the community embedding pool:
Reputation, verified batches and earnings show in the Volunteer Compute panel of
the tenant workspace (dgg.aitherium.com) and in adk volunteer status.
Why Aither?
Aither Hearth: your agent, on your phone
adk home runs one personal agent on your machine that answers only you, on the chat apps
you already use. The same CLI is installed as aither-hearth.
- Serve and channels.
adk home serveanswers you on the relay, Telegram, Discord, Slack, email, WhatsApp and SMS: every channel whose credentials are in the environment (adk home channelsshows which), or exactly the ones in--channels. Pair another channel by sendingpair <channel>from one that is already paired. - It messages you first. Reminders and follow-ups you ask for arrive on the channel you last used.
- Approvals. Anything that sends, books or adds (an email, a calendar event, a to-do, a
recurring follow-up) waits for your
yes <code>on the channel the request arrived on. - Receipts. Every action is appended to a signed, hash-chained log:
adk home receipts --verifyexits 0 intact, 1 tampered, 2 cannot judge.adk home trust statusshows what is enforced. - Connectors (optional). After
adk home signin, a workspace admin connects a Google account atapi.aitherium.com/admin?tab=connections(admin-only); the agent can then read your agenda and mail, and add to them only after an approval. Microsoft 365 is not available yet. - Local window.
adk home say "...",adk home eventsand/hearthinadk-shelltalk to the running serve over127.0.0.1instead of starting a second agent.
Everything above is free. The paid agent-home pack adds learning that carries across game
sessions and more than one agent at a time. Full guide: docs/agent-home.md.
Bonsai: an agent on literally anything
No GPU. No API key. No account. Nothing leaves your machine.
Bonsai is Aitherium's family of ultra-compact models built to make agents sovereign by default — they run on hardware everyone already owns. The 1-bit Bonsai-27B runs on a plain CPU with 4 GB of RAM; Bonsai-4B runs in 2 GB (Android via Termux, Raspberry Pi Zero). Agents on Bonsai get the full harness — tool calling, memory, safety, fleets — not a demo mode.
Why this matters, concretely:
- Free forever, offline after setup — one network pull for the model/image, then a fully working agent with zero external dependencies. Air-gapped targets work too: fetch the artifacts on a connected machine and sideload them.
- Tool calling works — Bonsai drives the same
@toolfunctions,ask_agentdelegation, and pack skills as the big models. - Private by construction — no key means no telemetry decision to trust; there is simply no wire out.
- A floor, not a ceiling — start on Bonsai today, add a GPU tier or a cloud reasoning backend later; your agent code does not change.
When you outgrow it, effort routing lets you keep Bonsai for the cheap calls and send only the hard ones somewhere bigger — see hybrid profiles.
Reasoning capture & code intelligence
Three packs added in 3.2.0. Each exists because of something the platform's chat models structurally cannot do.
External thinking — get the chain of thought back
Providers stopped returning raw reasoning. The recovery, from Oh My Pi's
externalThinking (MIT), needs no jailbreak: turn the model's native reasoning
channel off, then give it a tool whose only parameter is a string described as a
private scratchpad. It keeps reasoning — into the tool call, which the API
returns in plaintext. What comes back is the model's own shorthand, not a
written-for-an-audience summary.
Two things this pack refuses to do, both deliberate:
- It refuses unknown and incapable models. A model that cannot suppress its native channel gets both channels or a rejected request, so it is refused and counted, never probed hopefully.
- It disarms on model swap. Whether the scratchpad is legal is a property of
the model, not the session, so
reconcile()must run on every swap. Arming it once at startup is correct right up until someone changes models.
deep_thinkhere is the scratchpad TOOL — a place to write reasoning. If your stack also has adeep_think/deep_thinkingflag meaning "escalate to a more expensive search path", they are different things. Same word, two planes.
Security, stated plainly: everything the model thinks becomes a tool parameter, so it flows into your logs, traces and whatever observability stack you run. If the context held a credential, the reasoning about it lands in all of them. Do not arm this on a surface whose tool calls you would not read aloud.
Oh My Pi interop
An omp session recorded with external thinking on already contains raw reasoning
in its think tool calls — a corpus that cost nothing to produce.
The schema is discovered, not assumed. An unrecognised layout returns
ok=False, reason="unknown_schema" with the tables it found — because an
importer that returns [] there is indistinguishable from one pointed at a
database with no traces in it, and those call for opposite responses.
DeepSeek Coder — fill-in-the-middle and repo packing
dsc_infill writes the code between two fragments. Ask a chat model to fill a
gap and it rewrites your surrounding lines — a different operation, and the
reason inline completion never worked well with one.
dsc_repo_context implements Algorithm 1 of the DeepSeek-Coder paper: partition
the dependency graph into disconnected subgraphs, then take argmin(in_degree) —
which is what makes the ordering total on a cyclic import graph rather than
stalling. Cycles are reported, never silently broken.
Call dsc_traps() first. Every way to misformat a prompt for this family
produces a fluent, confident, wrong answer with nothing logged: the FIM sentinels
are U+FF5C and U+2581 (not | and _), the suffix goes after the hole
marker, and an instruct model needs stop token 32014 for raw completion or it
halts at the first turn boundary and reads as a weak model.
Setting Up Inference
The backbone of the ADK: it runs your agents on whatever you have, and routes each call to the right model. Per-provider setup guides live in docs/providers/.
Auto-detection
adk quickstart (or auto_setup() in code) detects your hardware and configures the optimal backend:
- NVIDIA + Docker — starts vLLM (paged attention, continuous batching, tensor parallelism)
- NVIDIA DGX Spark — auto-detected on the LAN, registered as a remote inference node
- AMD / Apple Silicon / no Docker — falls back to llama.cpp (orchestrator GGUF from Aitherium's weights store)
- No GPU — Bonsai locally, or cloud APIs (Aitherium gateway, or OpenAI/Anthropic/DeepSeek direct)
Pick a tier for your VRAM
Choose a backend explicitly
Switch backends at runtime — no restart
Effort-based model routing
Aither picks the model by task complexity, so cheap calls stay cheap and hard calls get the big model:
Hardware profiles
TQ4 (TurboQuant 4-bit) runs on GPUs as small as 6 GB. Bonsai 1-bit runs on anything — including phones.
Grid: inference across multiple machines
Run a 3-tier effort-routed cluster — GPU desktop + Mac + CPU mini-PCs — with automatic fallback. Full guide: GRID_SETUP.md.
Omit --mac-host to auto-scan the LAN. For advanced multi-node sizing, start with
adk deploy grid --help.
Building Agents
The full golden path — pack authoring, never-forget RAG memory, BYO-key, the gotcha checklist — is docs/AGENT_DEV_GUIDE.md. This section is the tour.
Single agent
Add tools
Knowledge-graph memory
Every agent ships with a local knowledge graph — SQLite-backed, embedding-aware, zero external deps. MicroScheduler / vLLM / llama.cpp embeddings when available, feature-hashing fallback offline.
- Hybrid search — keyword inverted index + semantic cosine similarity, weighted by query type
- Entity & relation extraction — services, file paths, code identifiers; "X uses/depends on/contains Y" triples
- BFS traversal —
get_related("entity", depth=2)for multi-hop exploration - Quantized vector store —
pip install 'awdk[turbovec]', thenVectorMemory(embed, store=TurboQuantVectorStore())(adk.core.turboquant_store): TurboQuant 4-bit codes, 20k x 768-d in 8.8 MB vs 61.4 MB float32 (7.0x; 13.6x atbit_width=2), recall@10 0.91 vs exact cosine;search(..., allow_ids=[...])scopes the scan inside the index and an empty allowlist returns nothing
Context neurons
Neurons auto-fire before LLM calls to gather relevant context — web, memory, graph — based on the query:
Built-in: WebSearchNeuron (DuckDuckGo, no key), MemoryNeuron (history search), GraphNeuron (semantic graph search).
Safety, context, streaming
Local fine-tuning (NanoGPT)
Zero-dependency character-level transformer (pure-Python autograd, no PyTorch). Good for topic classification, anomaly detection, and per-document LoRA memory.
Agent Fleets
The differentiator: any agent can call any other agent. Create a fleet and every agent automatically gets ask_agent and list_agents.
From the CLI
Install ready-made packs, then serve them alongside the shipped aither orchestrator:
From a YAML file
Mix the shipped orchestrator, installed packs, and your own inline agents:
Delegation & orchestration
Agents delegate through the built-in ask_agent tool, or you dispatch explicitly through the Forge:
Serve as an API (OpenAI-compatible)
Protect the API with a bearer token:
Agents & Packs
The package ships one identity — aither, the orchestrator — ready to run. You grow from there three ways:
1. Install a ready-made pack (bundled, one command each):
2. Bring your own — give any agent a system_prompt in fleet.yaml (no install needed), or drop a persona YAML in ~/.aither/agents/. To give an agent a durable identity across machines, see docs/PERSONA.md and adk soul export.
3. Author & publish a pack for others — the complete guide is docs/AGENT_DEV_GUIDE.md.
The broader specialist roster (atlas, demiurge, lyra, athena, hydra, prometheus, …) lives in the Aitherium platform and marketplace — it is not bundled in the free SDK.
Extend it with your own tools
Two extension points. Neither requires a fork, and neither is limited to tools we wrote.
Bring your own MCP server
Drop an mcpServers block anywhere adk looks and its tools are registered on your
agent alongside the built-ins. It is the same config shape Claude Code and Cursor
use, so if you already have one of those files you already have this:
Looked for in this order, first hit wins:
Both transports work: stdio (command + args, which is what most community
servers use) and HTTP (url). Tools arrive named mcp__<server>__<tool> — the
same spelling Claude Code shows — so two servers that both ship a search cannot
shadow each other.
A server that is down does not break the agent: the others keep working, the failure is logged with its reason, and calling a tool from a dead server returns a message that names the server rather than an empty result. (An empty result is indistinguishable from "nothing matched", which is how a broken integration passes for a working one.)
A stdio server is an arbitrary command from a config file — exactly as in Claude Code. It is opt-in by that config existing; adk never takes a server list from a prompt, a tool result, or anything else a model can influence.
Bring your own tool pack
A tool pack is a directory with a .toolpack.yaml and Python beside it. Point adk at
it and its tools are yours:
Packs are also discovered from any importable package that declares one, and from the packs bundled in this SDK. Author's guide: docs/AGENT_DEV_GUIDE.md.
Which one? An MCP server if the capability already exists as one, or if you want it usable from Claude Code and Cursor too. A tool pack if it is Python you are writing anyway and you want it in-process with no subprocess.
CLI Reference
Every command: docs/CLI-REFERENCE.md — all 95, generated from the parser itself, so it cannot describe a command that does not exist or omit one that does. The tour below is the opinionated subset.
The Aitherium ecosystem (optional)
The SDK is free, open-core, and complete on its own. Around it sits an optional platform you can grow into — every piece works à la carte, and none is required to build or run agents:
- Cloud inference & gateway — set one key (
adk login) and your agents can burst to bigger models while local tools, memory, and identity stay on your machine. - Cloud MCP tools — code search, shared memory, web research, and hundreds more tools your agents can register in one call (
MCPBridge). - Agent marketplace — install packs others published (
adk install pack:…); publish your own (adk publish). - Managed self-hosted nodes — enroll your machine (
adk onboard --quick) and manage its agents from the portal: QUICKSTART_SELF_HOSTED.md, long-term ops in docs/SELF_HOSTING_RUNBOOK.md. - Cross-machine relay — agents on different machines talking to each other: docs/AITHERRELAY_GUIDE.md.
Auth is optional — needed only for cloud inference, cross-machine fleet sync, the marketplace, or cloud MCP tools. Credentials live in ~/.aither/config.json (written by adk login; never set AITHER_API_KEY by hand). Plans + pricing at aitherium.com.
Environment Variables
Examples
See examples/:
hello_agent.py— minimal 20-line agentcustom_tools.py— agent with@toolfunctionsopenai_agent.py— different LLM backendsmulti_agent.py— two agents collaboratingopenclaw_agent.py— web-research agent
Troubleshooting & bug reports
First stop, always:
Then:
Community
Questions, ideas and show-and-tell go on the project boards at
https://app.aitherium.com/forum (the awdk board is this project's; reading needs no account).
Bugs go to GitHub issues.
License
Business Source License 1.1 — free for individuals, internal use, building your own products, research, and education. A commercial license is required only to offer a competing hosted AI-agent platform. Converts to AGPL-3.0 on 2030-03-13. See LICENSE; commercial licensing: [email protected].
The aw family
Standalone tools that share one idea: replace something you would otherwise have to trust with something you can check.
Each installs on its own, works offline, and needs no account.
awnix is the ground floor — A Linux you can hand to an agent — immutable base, capabilities included.
The Aitherium ecosystem
Every repository here is public. Each publishes an aither-manifest.json beside its page, so any surface can read every sibling's — the network is browsable from any node in it.
Built on REA (Reverse Engineer Anything) · llama.cpp · vLLM · ComfyUI · CentOS Stream · Podman · Docker · LanceDB · WireGuard · FFmpeg · Blender + Rigify · headroom · SANA · Hunyuan3D · repowise · Playwright · Chromium · Next.js · React.
Part of the Aitherium estate
awdk is one of several open repositories cut from the same system. They share one set of engineering rules, published as the Developer Codex.
New here? → Read the Codex — eighteen laws for building software that tells you when it is wrong, plus a four-chapter ramp if you have never worked with a coding agent. Contributing? → CONTRIBUTING.md
- aitherium.com — the system these repos are cut from
- The Codex — how we work here, and how to contribute
- awskills — procedures an agent can load and run
- AitherZero — PowerShell automation
- aither-kvcache — KV cache compression
- The Blog — what we measured, and what it cost
来源:README.md,提交 6d033e4
工具
0版本历史
1- v3.5.0最新Sep 16, 2026
评分
已满足适用检查项的 40%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分
请在仓库或注册中心条目中声明许可证。