A lightweight runtime that routes work from a Source to an interchangeable AI-agent Target and back through an Output.
Project description
A lightweight runtime that routes work from a Source, to an interchangeable AI-agent Target, back through an Output.
Source → Runtime → Target → Response → Output
It is not an agent framework, an orchestration engine, a workflow builder, or an LLM wrapper — those are things you plug into it. Waken's own job is small on purpose: receive work, route it to the correct agent, return the result through the right channel. Think "nginx for AI agents," not "another LangGraph."
Install
pip install waken
Zero external services — no Docker, no Redis, no Postgres. State (sessions, scheduled jobs, retry queue) lives in one SQLite file, created automatically.
Target and channel adapters ship as separate packages (see
ADR 0001)
so core stays dependency-free, but they can be pulled in alongside waken
with extras:
pip install waken[groq] # a single adapter
pip install waken[groq,voice] # several at once
pip install waken[all] # every adapter
Available extras: claude, gemini, copilot, openai, mistral,
cohere, groq, bedrock, ollama, voice, slack, telegram.
Quickstart
# app.py
from waken import Event, Response, Runtime, target_fn
@target_fn
async def echo(event: Event) -> Response:
return Response(text=event.payload["prompt"])
runtime = Runtime()
runtime.target("echo", echo)
runtime.run()
waken run app.py
In another terminal:
waken send echo "Build tic tac toe." --wait
# Build tic tac toe.
That's it — runtime.run() is already reachable over HTTP
(http://localhost:8080), with a CLI, a scheduler, and a retry queue on the
same object, no extra setup. A real deployment swaps echo for a Target
adapter (waken-claude, waken-gemini, ...) — same shape, same three lines.
What it does
- Sources turn something happening — an HTTP request, a webhook, a
scheduled tick, a new file — into an
Event. - Targets receive an
Eventand return aResponse. SwappingClaudeAdapter()forGeminiAdapter()is a one-line change; nothing else in the runtime has to know. - Outputs deliver a
Responseback through a channel (terminal, Slack, email, ...) — decoupled from wherever theEventcame from.
runtime.target("claude", ClaudeAdapter())
runtime.target("gemini", GeminiAdapter())
@runtime.every(hours=1)
async def hourly_summary():
await runtime.send(target="claude", prompt="Summarize today's commits.")
runtime.serve(port=8080)
More runnable examples: examples/ (scheduling, broadcasting to
multiple targets, routing an inbound webhook).
CLI
waken run <script.py> # execute a script that builds a Runtime and calls run()
waken send <target> <prompt> # POST /send/<target> on a running instance
waken emit <event> <json> # POST /emit/<event>
waken inspect # targets, sources, outputs, jobs, queue depth
Documentation
- Prior art review — what this fills that agent frameworks, MCP/A2A, and 2026's wave of "agent gateways" don't.
- Architecture Decision Record — the design and the alternatives it rejected.
- Public API specification — the full API, with examples.
- Implementation plan — milestones, and how the actual build diverged from the original plan along the way.
Status
Pre-release. The core API described above is implemented and tested.
Target adapters (waken-claude, waken-gemini, waken-copilot, ...) and
channel adapters (waken-voice, waken-slack, waken-telegram) ship as
separate packages, published independently of core — see the ADR's
alternatives for why core never depends
on them.
Development
git clone https://github.com/WakenHQ/waken
cd waken
pip install -e ".[dev]"
pytest
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file waken-0.1.2.tar.gz.
File metadata
- Download URL: waken-0.1.2.tar.gz
- Upload date:
- Size: 343.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9ea520c0d6537469c2d1ef01fcc366968e7a492369dd48d3671068ff5658fe64
|
|
| MD5 |
1ceade88c01f96a057e17d186083fc30
|
|
| BLAKE2b-256 |
413810785e65af7b1f0e53a2e929cc5e31e8648244a1d102ce83f2f38abd6df1
|
Provenance
The following attestation bundles were made for waken-0.1.2.tar.gz:
Publisher:
publish.yml on WakenHQ/waken
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
waken-0.1.2.tar.gz -
Subject digest:
9ea520c0d6537469c2d1ef01fcc366968e7a492369dd48d3671068ff5658fe64 - Sigstore transparency entry: 2082763149
- Sigstore integration time:
-
Permalink:
WakenHQ/waken@160fbddf0a633282cc14aa84b3a646f71e813d96 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/WakenHQ
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@160fbddf0a633282cc14aa84b3a646f71e813d96 -
Trigger Event:
push
-
Statement type:
File details
Details for the file waken-0.1.2-py3-none-any.whl.
File metadata
- Download URL: waken-0.1.2-py3-none-any.whl
- Upload date:
- Size: 24.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8c4bdcb377d2f2129861692b29aa8e5e3460a74cf06990b5c754e75b537b7ac0
|
|
| MD5 |
c0a96c72402688715b28b19454900025
|
|
| BLAKE2b-256 |
1ec11927f2fb70fda7db78cf991d0ec24b882c95416e1c54a0f64cbb85b33ca6
|
Provenance
The following attestation bundles were made for waken-0.1.2-py3-none-any.whl:
Publisher:
publish.yml on WakenHQ/waken
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
waken-0.1.2-py3-none-any.whl -
Subject digest:
8c4bdcb377d2f2129861692b29aa8e5e3460a74cf06990b5c754e75b537b7ac0 - Sigstore transparency entry: 2082763158
- Sigstore integration time:
-
Permalink:
WakenHQ/waken@160fbddf0a633282cc14aa84b3a646f71e813d96 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/WakenHQ
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@160fbddf0a633282cc14aa84b3a646f71e813d96 -
Trigger Event:
push
-
Statement type: