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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

waken-0.1.2.tar.gz (343.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

waken-0.1.2-py3-none-any.whl (24.7 kB view details)

Uploaded Python 3

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

Hashes for waken-0.1.2.tar.gz
Algorithm Hash digest
SHA256 9ea520c0d6537469c2d1ef01fcc366968e7a492369dd48d3671068ff5658fe64
MD5 1ceade88c01f96a057e17d186083fc30
BLAKE2b-256 413810785e65af7b1f0e53a2e929cc5e31e8648244a1d102ce83f2f38abd6df1

See more details on using hashes here.

Provenance

The following attestation bundles were made for waken-0.1.2.tar.gz:

Publisher: publish.yml on WakenHQ/waken

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for waken-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 8c4bdcb377d2f2129861692b29aa8e5e3460a74cf06990b5c754e75b537b7ac0
MD5 c0a96c72402688715b28b19454900025
BLAKE2b-256 1ec11927f2fb70fda7db78cf991d0ec24b882c95416e1c54a0f64cbb85b33ca6

See more details on using hashes here.

Provenance

The following attestation bundles were made for waken-0.1.2-py3-none-any.whl:

Publisher: publish.yml on WakenHQ/waken

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page