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.
- aither_adk-0.1.0a1/.gitignore +10 -0
- aither_adk-0.1.0a1/Dockerfile +34 -0
- aither_adk-0.1.0a1/PKG-INFO +393 -0
- aither_adk-0.1.0a1/README.md +357 -0
- aither_adk-0.1.0a1/adk/__init__.py +110 -0
- aither_adk-0.1.0a1/adk/agent.py +334 -0
- aither_adk-0.1.0a1/adk/bugreport.py +194 -0
- aither_adk-0.1.0a1/adk/builtin_tools.py +468 -0
- aither_adk-0.1.0a1/adk/chronicle.py +386 -0
- aither_adk-0.1.0a1/adk/config.py +188 -0
- aither_adk-0.1.0a1/adk/context.py +165 -0
- aither_adk-0.1.0a1/adk/conversations.py +410 -0
- aither_adk-0.1.0a1/adk/events.py +163 -0
- aither_adk-0.1.0a1/adk/federation.py +767 -0
- aither_adk-0.1.0a1/adk/fleet.py +203 -0
- aither_adk-0.1.0a1/adk/forge.py +299 -0
- aither_adk-0.1.0a1/adk/gateway.py +126 -0
- aither_adk-0.1.0a1/adk/identities/aither.yaml +15 -0
- aither_adk-0.1.0a1/adk/identities/apollo.yaml +15 -0
- aither_adk-0.1.0a1/adk/identities/athena.yaml +15 -0
- aither_adk-0.1.0a1/adk/identities/atlas.yaml +15 -0
- aither_adk-0.1.0a1/adk/identities/chaos.yaml +15 -0
- aither_adk-0.1.0a1/adk/identities/demiurge.yaml +15 -0
- aither_adk-0.1.0a1/adk/identities/hera.yaml +15 -0
- aither_adk-0.1.0a1/adk/identities/hydra.yaml +15 -0
- aither_adk-0.1.0a1/adk/identities/iris.yaml +15 -0
- aither_adk-0.1.0a1/adk/identities/lyra.yaml +15 -0
- aither_adk-0.1.0a1/adk/identities/morgana.yaml +15 -0
- aither_adk-0.1.0a1/adk/identities/prometheus.yaml +15 -0
- aither_adk-0.1.0a1/adk/identities/saga.yaml +15 -0
- aither_adk-0.1.0a1/adk/identities/themis.yaml +15 -0
- aither_adk-0.1.0a1/adk/identities/vera.yaml +15 -0
- aither_adk-0.1.0a1/adk/identities/viviane.yaml +15 -0
- aither_adk-0.1.0a1/adk/identity.py +271 -0
- aither_adk-0.1.0a1/adk/llm/__init__.py +305 -0
- aither_adk-0.1.0a1/adk/llm/anthropic.py +169 -0
- aither_adk-0.1.0a1/adk/llm/base.py +111 -0
- aither_adk-0.1.0a1/adk/llm/ollama.py +139 -0
- aither_adk-0.1.0a1/adk/llm/openai_compat.py +148 -0
- aither_adk-0.1.0a1/adk/loop_guard.py +276 -0
- aither_adk-0.1.0a1/adk/mcp.py +163 -0
- aither_adk-0.1.0a1/adk/memory.py +216 -0
- aither_adk-0.1.0a1/adk/metering.py +406 -0
- aither_adk-0.1.0a1/adk/metrics.py +288 -0
- aither_adk-0.1.0a1/adk/phonehome.py +177 -0
- aither_adk-0.1.0a1/adk/pulse.py +294 -0
- aither_adk-0.1.0a1/adk/registry.py +113 -0
- aither_adk-0.1.0a1/adk/safety.py +190 -0
- aither_adk-0.1.0a1/adk/sandbox.py +451 -0
- aither_adk-0.1.0a1/adk/server.py +611 -0
- aither_adk-0.1.0a1/adk/services.py +258 -0
- aither_adk-0.1.0a1/adk/setup.py +880 -0
- aither_adk-0.1.0a1/adk/strata.py +210 -0
- aither_adk-0.1.0a1/adk/tools.py +180 -0
- aither_adk-0.1.0a1/adk/trace.py +101 -0
- aither_adk-0.1.0a1/adk/watch.py +266 -0
- aither_adk-0.1.0a1/docker-compose.adk-vllm.yml +98 -0
- aither_adk-0.1.0a1/examples/custom_tools.py +48 -0
- aither_adk-0.1.0a1/examples/federation_demo.py +366 -0
- aither_adk-0.1.0a1/examples/fleet/adk-test-agent/identity.yaml +29 -0
- aither_adk-0.1.0a1/examples/fleet/adk-test-agent/main.py +110 -0
- aither_adk-0.1.0a1/examples/full_lifecycle_test.py +273 -0
- aither_adk-0.1.0a1/examples/hello_agent.py +22 -0
- aither_adk-0.1.0a1/examples/multi_agent.py +40 -0
- aither_adk-0.1.0a1/examples/openai_agent.py +43 -0
- aither_adk-0.1.0a1/examples/openclaw_agent.py +62 -0
- aither_adk-0.1.0a1/install.py +1051 -0
- aither_adk-0.1.0a1/profiles/amd.yaml +29 -0
- aither_adk-0.1.0a1/profiles/apple_silicon.yaml +29 -0
- aither_adk-0.1.0a1/profiles/cpu_only.yaml +80 -0
- aither_adk-0.1.0a1/profiles/minimal.yaml +60 -0
- aither_adk-0.1.0a1/profiles/nvidia_high.yaml +31 -0
- aither_adk-0.1.0a1/profiles/nvidia_low.yaml +29 -0
- aither_adk-0.1.0a1/profiles/nvidia_mid.yaml +30 -0
- aither_adk-0.1.0a1/profiles/nvidia_ultra.yaml +31 -0
- aither_adk-0.1.0a1/profiles/server.yaml +129 -0
- aither_adk-0.1.0a1/profiles/standard.yaml +74 -0
- aither_adk-0.1.0a1/profiles/workstation.yaml +97 -0
- aither_adk-0.1.0a1/pyproject.toml +60 -0
- aither_adk-0.1.0a1/setup-vllm.py +1235 -0
- aither_adk-0.1.0a1/tests/__init__.py +0 -0
- aither_adk-0.1.0a1/tests/test_agent.py +171 -0
- aither_adk-0.1.0a1/tests/test_core_infra.py +501 -0
- aither_adk-0.1.0a1/tests/test_federation.py +441 -0
- aither_adk-0.1.0a1/tests/test_llm_providers.py +317 -0
- aither_adk-0.1.0a1/tests/test_memory.py +111 -0
- aither_adk-0.1.0a1/tests/test_observability.py +704 -0
- aither_adk-0.1.0a1/tests/test_server.py +102 -0
- aither_adk-0.1.0a1/tests/test_setup.py +889 -0
- aither_adk-0.1.0a1/tests/test_strata.py +287 -0
- aither_adk-0.1.0a1/tests/test_tools.py +155 -0
|
@@ -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
|