Skip to content

Module map

This page is a high-level map of Takopi’s internal modules: what they do and how they fit together.

Entry points

Module Responsibility
cli.py Typer CLI entry point; loads settings, selects engine/transport, runs the transport backend.
telegram/backend.py Telegram transport backend: validates config, runs onboarding, builds and runs the Telegram bridge.

Orchestration and routing

Module Responsibility
runner_bridge.py Transport-agnostic orchestration: per-message handler, progress updates, final render, cancellation, resume coordination.
router.py Auto-router: resolves resume tokens by polling runners; selects a runner for a message.
scheduler.py Per-thread FIFO job queueing with serialization.
transport_runtime.py Facade used by transports and commands to resolve messages and runners without importing internal router/project types.

Domain model and events

Module Responsibility
model.py Domain types: resume tokens, events, actions, run results.
runner.py Runner protocol and event queue utilities.
events.py Event factory helpers for building Takopi events consistently.

Rendering and progress

Module Responsibility
progress.py Progress tracking: reduces takopi events into progress snapshots.
markdown.py Markdown formatting for progress/final messages; includes helpers like elapsed formatting.
presenter.py Presenter protocol: converts ProgressState into transport-specific messages.
transport.py Transport protocol: send/edit/delete abstractions and message reference types.

Telegram implementation

Module Responsibility
telegram/bridge.py Telegram bridge loop: polls updates, filters messages, dispatches handlers, coordinates cancellation.
telegram/client.py Telegram API wrapper with retry/outbox semantics.
telegram/render.py Telegram markdown rendering and trimming.
telegram/onboarding.py Interactive setup and setup validation UX.
telegram/commands/* In-chat command handlers (/agent, /file, /topic, /ctx, /new, …).

Plugins

Module Responsibility
plugins.py Entrypoint discovery and lazy loading (capture load errors, filter by enabled list).
engines.py Engine backend discovery and loading via entrypoints.
transports.py Transport backend discovery and loading via entrypoints.
commands.py Command backend discovery and loading via entrypoints; command execution helpers.
ids.py Shared ID regex and collision checks for plugin ids and Telegram command names.
api.py Public plugin API boundary (takopi.api re-exports).

Runners and schemas

Module Responsibility
runners/* Engine runner implementations (Codex, Claude, OpenCode, Pi).
schemas/* msgspec schemas / decoders for engine JSONL streams.

Configuration and persistence

Module Responsibility
settings.py Loads takopi.toml (TOML + env), validates with pydantic-settings.
config_store.py Raw TOML read/write (merge/update without clobbering extra sections).
config_migrations.py One-time edits to on-disk config (e.g. legacy Telegram key migration).

Utilities

Module Responsibility
utils/paths.py Path/command relativization helpers.
utils/streams.py Async stream helpers (iter_bytes_lines, stderr draining).
utils/subprocess.py Subprocess management helpers (terminate/kill best-effort).