aither-adk 0.1.0a1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. aither_adk-0.1.0a1/.gitignore +10 -0
  2. aither_adk-0.1.0a1/Dockerfile +34 -0
  3. aither_adk-0.1.0a1/PKG-INFO +393 -0
  4. aither_adk-0.1.0a1/README.md +357 -0
  5. aither_adk-0.1.0a1/adk/__init__.py +110 -0
  6. aither_adk-0.1.0a1/adk/agent.py +334 -0
  7. aither_adk-0.1.0a1/adk/bugreport.py +194 -0
  8. aither_adk-0.1.0a1/adk/builtin_tools.py +468 -0
  9. aither_adk-0.1.0a1/adk/chronicle.py +386 -0
  10. aither_adk-0.1.0a1/adk/config.py +188 -0
  11. aither_adk-0.1.0a1/adk/context.py +165 -0
  12. aither_adk-0.1.0a1/adk/conversations.py +410 -0
  13. aither_adk-0.1.0a1/adk/events.py +163 -0
  14. aither_adk-0.1.0a1/adk/federation.py +767 -0
  15. aither_adk-0.1.0a1/adk/fleet.py +203 -0
  16. aither_adk-0.1.0a1/adk/forge.py +299 -0
  17. aither_adk-0.1.0a1/adk/gateway.py +126 -0
  18. aither_adk-0.1.0a1/adk/identities/aither.yaml +15 -0
  19. aither_adk-0.1.0a1/adk/identities/apollo.yaml +15 -0
  20. aither_adk-0.1.0a1/adk/identities/athena.yaml +15 -0
  21. aither_adk-0.1.0a1/adk/identities/atlas.yaml +15 -0
  22. aither_adk-0.1.0a1/adk/identities/chaos.yaml +15 -0
  23. aither_adk-0.1.0a1/adk/identities/demiurge.yaml +15 -0
  24. aither_adk-0.1.0a1/adk/identities/hera.yaml +15 -0
  25. aither_adk-0.1.0a1/adk/identities/hydra.yaml +15 -0
  26. aither_adk-0.1.0a1/adk/identities/iris.yaml +15 -0
  27. aither_adk-0.1.0a1/adk/identities/lyra.yaml +15 -0
  28. aither_adk-0.1.0a1/adk/identities/morgana.yaml +15 -0
  29. aither_adk-0.1.0a1/adk/identities/prometheus.yaml +15 -0
  30. aither_adk-0.1.0a1/adk/identities/saga.yaml +15 -0
  31. aither_adk-0.1.0a1/adk/identities/themis.yaml +15 -0
  32. aither_adk-0.1.0a1/adk/identities/vera.yaml +15 -0
  33. aither_adk-0.1.0a1/adk/identities/viviane.yaml +15 -0
  34. aither_adk-0.1.0a1/adk/identity.py +271 -0
  35. aither_adk-0.1.0a1/adk/llm/__init__.py +305 -0
  36. aither_adk-0.1.0a1/adk/llm/anthropic.py +169 -0
  37. aither_adk-0.1.0a1/adk/llm/base.py +111 -0
  38. aither_adk-0.1.0a1/adk/llm/ollama.py +139 -0
  39. aither_adk-0.1.0a1/adk/llm/openai_compat.py +148 -0
  40. aither_adk-0.1.0a1/adk/loop_guard.py +276 -0
  41. aither_adk-0.1.0a1/adk/mcp.py +163 -0
  42. aither_adk-0.1.0a1/adk/memory.py +216 -0
  43. aither_adk-0.1.0a1/adk/metering.py +406 -0
  44. aither_adk-0.1.0a1/adk/metrics.py +288 -0
  45. aither_adk-0.1.0a1/adk/phonehome.py +177 -0
  46. aither_adk-0.1.0a1/adk/pulse.py +294 -0
  47. aither_adk-0.1.0a1/adk/registry.py +113 -0
  48. aither_adk-0.1.0a1/adk/safety.py +190 -0
  49. aither_adk-0.1.0a1/adk/sandbox.py +451 -0
  50. aither_adk-0.1.0a1/adk/server.py +611 -0
  51. aither_adk-0.1.0a1/adk/services.py +258 -0
  52. aither_adk-0.1.0a1/adk/setup.py +880 -0
  53. aither_adk-0.1.0a1/adk/strata.py +210 -0
  54. aither_adk-0.1.0a1/adk/tools.py +180 -0
  55. aither_adk-0.1.0a1/adk/trace.py +101 -0
  56. aither_adk-0.1.0a1/adk/watch.py +266 -0
  57. aither_adk-0.1.0a1/docker-compose.adk-vllm.yml +98 -0
  58. aither_adk-0.1.0a1/examples/custom_tools.py +48 -0
  59. aither_adk-0.1.0a1/examples/federation_demo.py +366 -0
  60. aither_adk-0.1.0a1/examples/fleet/adk-test-agent/identity.yaml +29 -0
  61. aither_adk-0.1.0a1/examples/fleet/adk-test-agent/main.py +110 -0
  62. aither_adk-0.1.0a1/examples/full_lifecycle_test.py +273 -0
  63. aither_adk-0.1.0a1/examples/hello_agent.py +22 -0
  64. aither_adk-0.1.0a1/examples/multi_agent.py +40 -0
  65. aither_adk-0.1.0a1/examples/openai_agent.py +43 -0
  66. aither_adk-0.1.0a1/examples/openclaw_agent.py +62 -0
  67. aither_adk-0.1.0a1/install.py +1051 -0
  68. aither_adk-0.1.0a1/profiles/amd.yaml +29 -0
  69. aither_adk-0.1.0a1/profiles/apple_silicon.yaml +29 -0
  70. aither_adk-0.1.0a1/profiles/cpu_only.yaml +80 -0
  71. aither_adk-0.1.0a1/profiles/minimal.yaml +60 -0
  72. aither_adk-0.1.0a1/profiles/nvidia_high.yaml +31 -0
  73. aither_adk-0.1.0a1/profiles/nvidia_low.yaml +29 -0
  74. aither_adk-0.1.0a1/profiles/nvidia_mid.yaml +30 -0
  75. aither_adk-0.1.0a1/profiles/nvidia_ultra.yaml +31 -0
  76. aither_adk-0.1.0a1/profiles/server.yaml +129 -0
  77. aither_adk-0.1.0a1/profiles/standard.yaml +74 -0
  78. aither_adk-0.1.0a1/profiles/workstation.yaml +97 -0
  79. aither_adk-0.1.0a1/pyproject.toml +60 -0
  80. aither_adk-0.1.0a1/setup-vllm.py +1235 -0
  81. aither_adk-0.1.0a1/tests/__init__.py +0 -0
  82. aither_adk-0.1.0a1/tests/test_agent.py +171 -0
  83. aither_adk-0.1.0a1/tests/test_core_infra.py +501 -0
  84. aither_adk-0.1.0a1/tests/test_federation.py +441 -0
  85. aither_adk-0.1.0a1/tests/test_llm_providers.py +317 -0
  86. aither_adk-0.1.0a1/tests/test_memory.py +111 -0
  87. aither_adk-0.1.0a1/tests/test_observability.py +704 -0
  88. aither_adk-0.1.0a1/tests/test_server.py +102 -0
  89. aither_adk-0.1.0a1/tests/test_setup.py +889 -0
  90. aither_adk-0.1.0a1/tests/test_strata.py +287 -0
  91. aither_adk-0.1.0a1/tests/test_tools.py +155 -0
@@ -0,0 +1,10 @@
1
+ __pycache__/
2
+ *.pyc
3
+ *.pyo
4
+ .pytest_cache/
5
+ *.egg-info/
6
+ dist/
7
+ build/
8
+ .eggs/
9
+ *.egg
10
+ .env
@@ -0,0 +1,34 @@
1
+ FROM python:3.12-slim AS builder
2
+
3
+ WORKDIR /build
4
+ COPY pyproject.toml README.md ./
5
+ COPY adk/ adk/
6
+
7
+ RUN pip install --no-cache-dir --prefix=/install .
8
+
9
+ # ---------------------------------------------------------------------------
10
+
11
+ FROM python:3.12-slim
12
+
13
+ LABEL org.opencontainers.image.title="aither-adk" \
14
+ org.opencontainers.image.description="AitherOS Agent Development Kit server" \
15
+ org.opencontainers.image.version="0.1.0a1" \
16
+ org.opencontainers.image.vendor="Aitherium" \
17
+ org.opencontainers.image.url="https://aitherium.com" \
18
+ org.opencontainers.image.source="https://github.com/Aitherium/AitherOS-Alpha" \
19
+ org.opencontainers.image.licenses="Apache-2.0"
20
+
21
+ RUN groupadd --gid 1000 adk && \
22
+ useradd --uid 1000 --gid adk --create-home adk
23
+
24
+ COPY --from=builder /install /usr/local
25
+
26
+ WORKDIR /home/adk
27
+ USER adk
28
+
29
+ EXPOSE 8080
30
+
31
+ HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
32
+ CMD python -c "import httpx; httpx.get('http://localhost:8080/health', timeout=4).raise_for_status()"
33
+
34
+ CMD ["aither-serve", "--host", "0.0.0.0", "--port", "8080"]
@@ -0,0 +1,393 @@
1
+ Metadata-Version: 2.4
2
+ Name: aither-adk
3
+ Version: 0.1.0a1
4
+ Summary: AitherOS Agent Development Kit — Build AI agents that work with any LLM backend
5
+ Project-URL: Homepage, https://aitherium.com
6
+ Project-URL: Repository, https://github.com/Aitherium/AitherOS-Alpha
7
+ Project-URL: Documentation, https://github.com/Aitherium/AitherOS-Alpha#readme
8
+ Author-email: Aitherium <hello@aitherium.com>
9
+ License-Expression: Apache-2.0
10
+ Keywords: agents,ai,aitheros,anthropic,llm,ollama,openai
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: OSI Approved :: Apache Software License
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
19
+ Requires-Python: >=3.10
20
+ Requires-Dist: fastapi>=0.104.0
21
+ Requires-Dist: httpx>=0.25.0
22
+ Requires-Dist: pyyaml>=6.0
23
+ Requires-Dist: uvicorn[standard]>=0.24.0
24
+ Provides-Extra: all
25
+ Requires-Dist: anthropic>=0.18.0; extra == 'all'
26
+ Requires-Dist: openai>=1.0.0; extra == 'all'
27
+ Provides-Extra: anthropic
28
+ Requires-Dist: anthropic>=0.18.0; extra == 'anthropic'
29
+ Provides-Extra: dev
30
+ Requires-Dist: pytest-asyncio>=0.23.0; extra == 'dev'
31
+ Requires-Dist: pytest>=7.0; extra == 'dev'
32
+ Requires-Dist: respx>=0.20.0; extra == 'dev'
33
+ Provides-Extra: openai
34
+ Requires-Dist: openai>=1.0.0; extra == 'openai'
35
+ Description-Content-Type: text/markdown
36
+
37
+ # AitherOS Alpha
38
+
39
+ A standalone AI agent platform. Build agent fleets with **GPU-optimized local inference** — auto-detects your hardware, spins up vLLM containers with paged attention and continuous batching, and routes models by effort level.
40
+
41
+ One agent or twenty. **vLLM first**, Ollama fallback, cloud when needed. Your agents, your GPU, your rules.
42
+
43
+ **Works standalone. Works with Elysium. Works hybrid.** Start with Alpha on your laptop, connect to Elysium when you need the full stack — 97 microservices, training pipelines, mesh compute, and the Dark Factory. Alpha is the on-ramp.
44
+
45
+ ```bash
46
+ pip install aither-adk
47
+ ```
48
+
49
+ ## Quick Start
50
+
51
+ ### Single Agent
52
+
53
+ ```python
54
+ import asyncio
55
+ from adk import AitherAgent
56
+
57
+ async def main():
58
+ agent = AitherAgent("aither") # Auto-detects vLLM/Ollama on localhost
59
+ response = await agent.chat("Hello! What can you help me with?")
60
+ print(response.content)
61
+
62
+ asyncio.run(main())
63
+ ```
64
+
65
+ ### Fleet Mode — Multiple Agents
66
+
67
+ ```python
68
+ import asyncio
69
+ from adk.fleet import load_fleet
70
+
71
+ async def main():
72
+ fleet = load_fleet(agent_names=["aither", "lyra", "demiurge", "hydra"])
73
+ orchestrator = fleet.get_orchestrator() # aither
74
+
75
+ # Chat with the orchestrator — it can delegate to other agents
76
+ response = await orchestrator.chat("Review the auth module for security issues")
77
+ print(response.content)
78
+
79
+ # Or talk to a specific agent directly
80
+ lyra = fleet.get_agent("lyra")
81
+ response = await lyra.chat("Research the latest trends in agent frameworks")
82
+ print(response.content)
83
+
84
+ asyncio.run(main())
85
+ ```
86
+
87
+ ### Serve as API
88
+
89
+ ```bash
90
+ # Single agent
91
+ aither-serve --identity aither --port 8080
92
+
93
+ # Fleet mode — multiple agents
94
+ aither-serve --agents aither,lyra,demiurge,hydra --port 8080
95
+
96
+ # Fleet from YAML config
97
+ aither-serve --fleet fleet.yaml --port 8080
98
+ ```
99
+
100
+ ## Fleet Mode
101
+
102
+ The key differentiator: any agent can call any other agent. When you create a fleet, every agent automatically gets `ask_agent` and `list_agents` tools.
103
+
104
+ ### From the CLI
105
+
106
+ ```bash
107
+ aither-serve --agents aither,lyra,demiurge,hydra,athena
108
+ ```
109
+
110
+ ### From a YAML file
111
+
112
+ ```yaml
113
+ # fleet.yaml
114
+ name: my-fleet
115
+ orchestrator: aither # gets all delegation requests by default
116
+ agents:
117
+ - identity: aither
118
+ - identity: lyra
119
+ - identity: demiurge
120
+ - identity: hydra
121
+ - identity: athena
122
+ - name: my-custom-agent
123
+ system_prompt: "You are a specialized data analysis agent..."
124
+ ```
125
+
126
+ ```bash
127
+ aither-serve --fleet fleet.yaml
128
+ ```
129
+
130
+ ### Fleet API Endpoints
131
+
132
+ | Endpoint | Method | Description |
133
+ |----------|--------|-------------|
134
+ | `/agents` | GET | List all agents in the fleet |
135
+ | `/agents/{name}/chat` | POST | Chat with a specific agent |
136
+ | `/agents/{name}/sessions` | GET | List sessions for an agent |
137
+ | `/forge/dispatch` | POST | Dispatch via AgentForge (auto-routing) |
138
+ | `/chat` | POST | Chat with orchestrator (Genesis-compatible) |
139
+ | `/v1/chat/completions` | POST | OpenAI-compatible (routes to orchestrator) |
140
+
141
+ ## Orchestration
142
+
143
+ Agents delegate to each other through the built-in `ask_agent` tool. When an agent needs help from a specialist, it calls `ask_agent("demiurge", "Write a Python function that...")` and gets the result back.
144
+
145
+ ```python
146
+ from adk.forge import AgentForge, ForgeSpec
147
+
148
+ forge = AgentForge()
149
+
150
+ # Auto-route to best agent
151
+ result = await forge.dispatch(ForgeSpec(
152
+ agent_type="auto",
153
+ task="Review this code for security vulnerabilities: ...",
154
+ ))
155
+ # Routes to athena based on keyword matching
156
+
157
+ # Explicit dispatch
158
+ result = await forge.dispatch(ForgeSpec(
159
+ agent_type="demiurge",
160
+ task="Refactor the auth module to use async/await",
161
+ timeout=180.0,
162
+ ))
163
+ ```
164
+
165
+ ## Choose Your Backend
166
+
167
+ ```python
168
+ from adk import AitherAgent
169
+ from adk.llm import LLMRouter
170
+
171
+ # Ollama (auto-detected if running)
172
+ agent = AitherAgent("atlas")
173
+
174
+ # OpenAI
175
+ agent = AitherAgent("atlas", llm=LLMRouter(provider="openai", api_key="sk-..."))
176
+
177
+ # Anthropic
178
+ agent = AitherAgent("atlas", llm=LLMRouter(provider="anthropic", api_key="sk-ant-..."))
179
+
180
+ # vLLM / LM Studio / any OpenAI-compatible
181
+ agent = AitherAgent("atlas", llm=LLMRouter(
182
+ provider="openai",
183
+ base_url="http://localhost:8000/v1",
184
+ model="nvidia/Nemotron-Orchestrator-8B",
185
+ ))
186
+ ```
187
+
188
+ ## Architecture
189
+
190
+ ### Effort-Based Model Routing
191
+
192
+ AitherOS Alpha automatically selects the right model based on task complexity:
193
+
194
+ | Effort | vLLM (primary) | Ollama (fallback) | OpenAI | Anthropic | Use Case |
195
+ |--------|----------------|-------------------|--------|-----------|----------|
196
+ | 1-3 (small) | `Llama-3.2-3B` | `llama3.2:3b` | `gpt-4o-mini` | `claude-haiku` | Quick lookups, simple Q&A |
197
+ | 4-6 (medium) | `Nemotron-Orchestrator-8B` | `nemotron-orchestrator-8b` | `gpt-4o` | `claude-sonnet` | Most tasks, orchestration |
198
+ | 7-10 (large) | `deepseek-r1:14b` | `deepseek-r1:14b` | `o1` | `claude-opus` | Complex reasoning, code review |
199
+
200
+ ### GPU Auto-Detection
201
+
202
+ `auto_setup()` detects your GPU and configures the optimal backend:
203
+
204
+ 1. **NVIDIA + Docker** → Starts vLLM containers (paged attention, continuous batching, tensor parallelism)
205
+ 2. **AMD / Apple Silicon / No Docker** → Falls back to Ollama
206
+ 3. **No GPU** → Uses cloud APIs (gateway.aitherium.com or OpenAI/Anthropic direct)
207
+
208
+ ```python
209
+ from adk.setup import auto_setup
210
+ report = await auto_setup() # Detects GPU, starts vLLM, ready to go
211
+ ```
212
+
213
+ ### Core Components
214
+
215
+ ```
216
+ AitherAgent — Agent with identity, tools, memory, LLM
217
+ AgentRegistry — In-process registry of running agents
218
+ AgentForge — Dispatch agents by type or auto-route
219
+ FleetConfig — Multi-agent fleet from YAML or CLI
220
+ ConversationStore — JSON file persistence for conversations
221
+ LLMRouter — Multi-backend auto-detecting router
222
+ Memory — SQLite KV store + conversation history
223
+ ToolRegistry — @tool decorator, OpenAI function calling format
224
+ Identity — 16 YAML-based agent personas
225
+ ```
226
+
227
+ ## Add Tools
228
+
229
+ ```python
230
+ from adk import AitherAgent, tool
231
+
232
+ @tool
233
+ def search_web(query: str) -> str:
234
+ """Search the web for information."""
235
+ return f"Results for: {query}"
236
+
237
+ @tool
238
+ def calculate(expression: str) -> str:
239
+ """Evaluate a math expression."""
240
+ return str(eval(expression))
241
+
242
+ agent = AitherAgent("atlas", tools=[get_global_registry()])
243
+ response = await agent.chat("What's 42 * 17?") # Uses calculate tool
244
+ ```
245
+
246
+ ## Agent Identities
247
+
248
+ 16 pre-built identities ship with the package:
249
+
250
+ | Identity | Role | Best For |
251
+ |----------|------|----------|
252
+ | `aither` | Orchestrator | System coordination, delegation |
253
+ | `atlas` | Project Manager | Planning, tracking, reporting |
254
+ | `demiurge` | Code Craftsman | Code generation, refactoring |
255
+ | `lyra` | Researcher | Research, knowledge synthesis |
256
+ | `athena` | Security Oracle | Security audits, vulnerability analysis |
257
+ | `hydra` | Code Guardian | Code review, quality assurance |
258
+ | `prometheus` | Infra Titan | Infrastructure, deployment, scaling |
259
+ | `apollo` | Performance | Optimization, benchmarking |
260
+ | `iris` | Creative | Image generation, design |
261
+ | `viviane` | Memory | Knowledge retrieval, context |
262
+ | `vera` | Content | Writing, editing, social media |
263
+ | `hera` | Community | Social engagement, publishing |
264
+ | `morgana` | Secrets | Security, encryption |
265
+ | `saga` | Documentation | Technical writing |
266
+ | `themis` | Compliance | Ethics, policy, fairness |
267
+ | `chaos` | Chaos Engineer | Resilience testing |
268
+
269
+ ## AitherOS Alpha vs Elysium
270
+
271
+ AitherOS Alpha is the standalone agent platform. **Elysium** is the full AitherOS deployment with 97 microservices. Alpha connects to Elysium when available but works completely standalone.
272
+
273
+ | Capability | Alpha (Standalone) | Elysium (Full AitherOS) |
274
+ |-----------|-------------------|------------------------|
275
+ | Agents | 16 identities, custom agents, fleet mode | 29 agent cards, full AgentKernel |
276
+ | Orchestration | In-process AgentForge, ask_agent delegation | SwarmCodingEngine (11 roles), Expeditions |
277
+ | LLM Routing | Ollama/OpenAI/Anthropic auto-detect, effort tiers | MicroScheduler VRAM coordination, vLLM multi-worker |
278
+ | Memory | SQLite KV + JSON conversation files | Unified knowledge graph, embeddings, MemoryGraph |
279
+ | Persistence | Local SQLite + JSON files (~/.aither/) | ConversationStore + crystallization + graph nodes |
280
+ | Tools | @tool decorator, tool registry | 100+ MCP tools, ToolGraph 3-tier, CodeGraph |
281
+ | Server | OpenAI-compatible API, fleet endpoints | Genesis orchestrator (97 microservices) |
282
+ | Training | -- | Prism, Trainer, Harvest, DaydreamCorpus |
283
+ | Creative | -- | ComfyUI, LTX video, Iris agent |
284
+ | Voice | -- | faster-whisper STT, Piper TTS |
285
+ | Autonomy | -- | Dark Factory, closed-loop learning |
286
+ | Security | -- | Full RBAC, capability tokens, HMAC-SHA256 |
287
+ | Multi-tenant | -- | Tenant isolation, caller context |
288
+ | Mesh | -- | AitherMesh, distributed compute, ExoNodes |
289
+ | Social | -- | MySpace pages, social graph, groups |
290
+ | Connect to Elysium | MCP bridge + federation client | N/A (IS Elysium) |
291
+
292
+ ## Hardware Profiles
293
+
294
+ AitherOS Alpha auto-detects your hardware and selects the right models:
295
+
296
+ | Profile | GPU VRAM | Default Model | Reasoning Model | Coding Model |
297
+ |---------|----------|---------------|-----------------|--------------|
298
+ | `cpu_only` | None | Cloud (gateway) | Cloud | Cloud |
299
+ | `minimal` | 8-12 GB | `llama3.2:3b` | -- | -- |
300
+ | `nvidia_mid` | 8-12 GB | `nemotron-orchestrator-8b` | `deepseek-r1:8b` | -- |
301
+ | `nvidia_high` | 16-24 GB | `nemotron-orchestrator-8b` | `deepseek-r1:14b` | `qwen2.5-coder:14b` |
302
+ | `nvidia_ultra` | 32+ GB | `nemotron-orchestrator-8b` | `deepseek-r1:32b` | `qwen2.5-coder:32b` |
303
+ | `apple_silicon` | M1/M2/M3/M4 | `nemotron-orchestrator-8b` | `deepseek-r1:8b` | -- |
304
+ | `amd` | ROCm | `nemotron-orchestrator-8b` | `deepseek-r1:8b` | -- |
305
+
306
+ ## Connect to Elysium
307
+
308
+ Alpha is designed as the gateway to Elysium. Three operating modes:
309
+
310
+ ### Standalone (no Elysium needed)
311
+ Everything runs locally — agents, LLM, memory, tools. Zero network dependencies.
312
+
313
+ ### Hybrid (best of both worlds)
314
+ Run agents locally but use Elysium for the heavy lifting — MCP tools, knowledge graph, training data, mesh compute. Your agents keep local autonomy but gain access to 100+ tools and the full AitherOS infrastructure.
315
+
316
+ ```python
317
+ from adk import AitherAgent
318
+ from adk.mcp import MCPBridge
319
+
320
+ # Create a local agent
321
+ agent = AitherAgent("atlas")
322
+
323
+ # Connect to Elysium's MCP tools
324
+ bridge = MCPBridge(api_key="your-key")
325
+ await bridge.register_tools(agent) # Now your agent has 100+ Elysium tools
326
+
327
+ # Agent can now use explore_code, query_memory, get_system_status, etc.
328
+ response = await agent.chat("Search the codebase for authentication bugs")
329
+ ```
330
+
331
+ ### Full Federation (join the mesh)
332
+ Register your Alpha node with Elysium. Your agents appear in the mesh, can receive delegated tasks, and contribute compute.
333
+
334
+ ```python
335
+ from adk import connect_federation
336
+
337
+ fed = connect_federation(host="http://elysium.local")
338
+ await fed.register("my-alpha-node", api_key="your-key")
339
+ await fed.join_mesh(capabilities=["text_gen", "code_review"])
340
+
341
+ # Your agents are now part of the Elysium fleet
342
+ status = await fed.get_system_status()
343
+ ```
344
+
345
+ ### Gateway Inference
346
+ No local GPU? Use the AitherOS gateway for inference — same API, cloud-hosted models.
347
+
348
+ ```bash
349
+ export AITHER_API_KEY=your-key
350
+ aither-serve --identity aither # Uses gateway.aitherium.com for LLM
351
+ ```
352
+
353
+ ## Environment Variables
354
+
355
+ | Variable | Default | Description |
356
+ |----------|---------|-------------|
357
+ | `AITHER_LLM_BACKEND` | `auto` | Backend: `ollama`, `openai`, `anthropic`, `auto` |
358
+ | `AITHER_MODEL` | (auto) | Default model name |
359
+ | `AITHER_PREFER_LOCAL` | `false` | Try Ollama before gateway |
360
+ | `OLLAMA_HOST` | `http://localhost:11434` | Ollama server URL |
361
+ | `OPENAI_BASE_URL` | `https://api.openai.com/v1` | OpenAI-compatible endpoint |
362
+ | `OPENAI_API_KEY` | | OpenAI API key |
363
+ | `ANTHROPIC_API_KEY` | | Anthropic API key |
364
+ | `AITHER_API_KEY` | | AitherOS gateway API key |
365
+ | `AITHER_PORT` | `8080` | Server port |
366
+ | `AITHER_HOST` | `0.0.0.0` | Server bind address |
367
+ | `AITHER_DATA_DIR` | `~/.aither` | Data directory for memory/conversations |
368
+ | `AITHER_PHONEHOME` | `false` | Enable opt-in telemetry |
369
+
370
+ ## Examples
371
+
372
+ See the `examples/` directory:
373
+ - `hello_agent.py` — Minimal 20-line agent
374
+ - `custom_tools.py` — Agent with `@tool` functions
375
+ - `openclaw_agent.py` — Web research agent
376
+ - `openai_agent.py` — Using different LLM backends
377
+ - `multi_agent.py` — Two agents collaborating
378
+ - `federation_demo.py` — Connecting to Elysium
379
+
380
+ ## Bug Reports
381
+
382
+ ```bash
383
+ # CLI
384
+ aither-bug "description of the issue"
385
+ aither-bug --dry-run # See what would be sent
386
+
387
+ # Programmatic
388
+ await agent.report_bug("Tool X fails with Y error")
389
+ ```
390
+
391
+ ## License
392
+
393
+ Apache-2.0