Skip to main content
Waken logo

Waken

CI Python 3.12+ Ruff mypy: strict License: MIT

Typing SVG

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 Event and return a Response. Swapping ClaudeAdapter() for GeminiAdapter() is a one-line change; nothing else in the runtime has to know.
  • Outputs deliver a Response back through a channel (terminal, Slack, email, ...) — decoupled from wherever the Event came 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

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

MIT

Metadata

Release files for waken 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for waken 0.1.2
File Size Uploaded
waken-0.1.2.tar.gz 343.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for waken 0.1.2
File Interpreter ABI Platform
waken-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 368.5 kB

Release files / waken-0.1.2.tar.gz

Download URL waken-0.1.2.tar.gz
Size 343.8 kB
Tags Source
SHA-256 checksum
How to use checksums
9ea520c0d6537469c2d1ef01fcc366968e7a492369dd48d3671068ff5658fe64
BLAKE2b-256 checksum
How to use checksums
413810785e65af7b1f0e53a2e929cc5e31e8648244a1d102ce83f2f38abd6df1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 5, 2026.

Transparency log

Release files / waken-0.1.2-py3-none-any.whl

Download URL waken-0.1.2-py3-none-any.whl
Size 24.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8c4bdcb377d2f2129861692b29aa8e5e3460a74cf06990b5c754e75b537b7ac0
BLAKE2b-256 checksum
How to use checksums
1ec11927f2fb70fda7db78cf991d0ec24b882c95416e1c54a0f64cbb85b33ca6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 5, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page