Reference
Last updated: 24 February 2026
Repo map
Quick pointers for navigating the Untether codebase.
Quick pointers for navigating the Untether codebase.
Where things start
- CLI entry point:
src/untether/cli.py - Telegram backend entry point:
src/untether/telegram/backend.py - Telegram bridge loop:
src/untether/telegram/bridge.py - Transport-agnostic handler:
src/untether/runner_bridge.py
Core concepts
- Domain types (resume tokens, events, actions):
src/untether/model.py - Runner protocol:
src/untether/runner.py - Router selection and resume polling:
src/untether/router.py - Per-thread scheduling:
src/untether/scheduler.py - Progress reduction and rendering:
src/untether/progress.py,src/untether/markdown.py
Engines and streaming
- Runner implementations:
src/untether/runners/* - JSONL decoding schemas:
src/untether/schemas/*
Plugins
- Public API boundary (
untether.api):src/untether/api.py - Entrypoint discovery + lazy loading:
src/untether/plugins.py - Engine/transport/command backend loading:
src/untether/engines.py,src/untether/transports.py,src/untether/commands.py
Configuration
- Settings model + TOML/env loading:
src/untether/settings.py - Config migrations:
src/untether/config_migrations.py
Docs and contracts
- Normative behavior: Specification
- Runner invariants:
tests/test_runner_contract.py
Was this helpful?
Thanks for your feedback!
Related Articles
How-To GuidesProjectsProjects let you target any registered repo from Telegram — no need to restart Untether or change directories. Send /myapp fix the tests from your phone and ...How-To GuidesAdding a RunnerThis guide explains how to add a new engine runner to Untether.How-To GuidesRoute by chatBind a Telegram chat to a project so messages in that chat automatically route to the right repo.