Skip to main content

tillm

Text-interface LLM control plane for the semcod/coru ecosystem.

Drives shell and terminal clients (aider, claude, codex, gemini, qwen-code, opencode, devin) from one registry and execution pipeline. Pair with gillm for graphical control (focus, inject, capture, orchestrator DSL).

Version Python License

AI Cost Tracking

PyPI Version Python License AI Cost Human Time Model

  • 🤖 LLM usage: $2.4399 (39 commits)
  • 👤 Human dev: ~$1172 (11.7h @ $100/h, 30min dedup)

Generated on 2026-07-03 using openrouter/deep/deep-v4-pro


Package Interface Role
tillm text / shell vendor CLI registry, drive, multi-client matrix, transports
gillm graphical GUI domain + *2gillm adapters (REST :8220, MCP, …)

Contents

Architecture

SUMD (description) → DOQL/source (code) → taskfile (automation) → testql (verification)

Sources: SUMD.md · app.doql.less

flowchart TB
  subgraph adapters [Input adapters — packages]
    NL[nlp2tillm]
    URI[uri2tillm]
    CLI[cli2tillm]
    MCP[mcp2tillm]
    REST[rest2tillm]
  end

  subgraph control [Control layer]
    DSL[dsl2tillm.dispatch]
    SCH[JSON Schema]
    ES[(EventStore)]
  end

  subgraph domain [Domain — src/tillm]
    REG[registry]
    DRV[drive / matrix]
    TR[binary / docker / http]
  end

  NL --> DSL
  URI --> DSL
  CLI --> DSL
  MCP --> DSL
  REST --> DSL
  DSL --> SCH
  DSL --> REG
  DSL --> DRV
  DRV --> TR
  DSL --> ES

Control layer packages

Package Role Port
dsl2tillm DSL + JSON Schema + CQRS bus
uri2tillm tillm:// → DSL
nlp2tillm NL → DSL
cli2tillm Shell REPL
mcp2tillm MCP stdio
rest2tillm FastAPI /v1/dsl 8216

Details: docs/control-layer.md · packages/README.md

Installation

Core (editable dev)

git clone <repo> tillm && cd tillm
pip install -e ".[dev]"

Control layer (all *2tillm packages)

bash packages/install-dev.sh

Optional ecosystem siblings

pip install -e ../nlp2dsl ../intract ../redsl ../proxym ../llx   # adjust paths

Note: tillm and *2tillm are not yet published on PyPI. Use editable installs from the repo.

Quick start

# List registered shell clients
tillm clients

# Dry-run (plans command, saves prompt, does not execute)
tillm drive --client aider --prompt "Refactor ticket PLF-1"

# Execute (requires client env vars — see configuration)
tillm drive --client aider --prompt "Refactor ticket PLF-1" --execute

# NLP → drive intent
tillm nlp "aider: napraw testy"

# Ecosystem validation
tillm validate

# Control layer
dsl2tillm exec HEALTH
rest2tillm serve --port 8216

tillm drive always saves the prompt under .koru/tillm/prompts/ before dry-run or execute.

Shell clients

Eight clients in the registry. Live status: tillm clients (ok / ~ / --).

Client Headless Automation profile
claude-code claude -p --dangerously-skip-permissions
aider --message-file
codex codex exec --dangerously-bypass-approvals-and-sandbox
gemini-cli gemini -p --yolo
qwen-code qwen -p
opencode opencode run
devin devin -p --permission-mode dangerous
cline dry-run only

Per-client setup: docs/clients/

Multi-client orchestration

tillm drive --clients aider,codex --prompt "review auth" --parallel 2
tillm drive --all --prompt "review" --execute --profile automation
tillm drive --all --prompt "review" --quorum 2 --fail-fast

DSL equivalent:

DRIVE_MATRIX CLIENTS aider,codex PROMPT "review" PARALLEL 2
DRIVE_MATRIX ALL PROMPT "review" EXECUTE true PROFILE automation

Configuration

Copy .env.example.env. tillm auto-loads <project>/.env (via project_env + optional env2llm):

# .env — tillm reads this automatically from project root
OPENROUTER_API_KEY=sk-or-v1-...
LLM_MODEL=openrouter/deepseek/deepseek-v4-pro
AIDER_MODEL=openrouter/deepseek/deepseek-v4-pro   # optional; defaults from LLM_MODEL

tillm drive --client aider --prompt "fix tests" --execute

Install env2llm integration: pip install -e ".[env]" or pip install -e ../env2llm

Full reference: docs/configuration.md

Environment variables

Variable Default Purpose
TILLM_DEFAULT_CLIENT aider Default for tillm nlp
TILLM_EXECUTE_PROFILE default automation for CI
TILLM_BACKEND binary docker for compose exec
TILLM_NLP2DSL off External NLP2DSL bridge

Optional NLP2DSL bridge

export TILLM_NLP2DSL=1
export NLP2DSL_BACKEND_URL=http://localhost:8010
tillm nlp "uruchom claude dla ticketu PLF-123"

Without the service, tillm uses a deterministic local parser.

Version and updates

Check installed version

pip show tillm | grep Version          # core: 0.1.32
cat VERSION
pip show dsl2tillm rest2tillm         # control layer: 0.1.0
tillm clients
tillm validate

Update from repo (current workflow)

cd tillm
git pull
pip install -e ".[dev]"
bash packages/install-dev.sh
python -m pytest tests/test_tillm.py packages/*/tests -q

Update vendor CLIs (independent)

pip install -U aider-chat
npm update -g @anthropic-ai/claude-code @openai/codex @google/gemini-cli

When published to PyPI:

pip install -U tillm dsl2tillm uri2tillm nlp2tillm cli2tillm mcp2tillm rest2tillm

Testing

python -m pytest tests/test_tillm.py packages/*/tests -q
dsl2tillm validate-schema
dsl2tillm exec HEALTH

Examples

Runnable smoke tests per shell client (OpenRouter + tillm):

cp examples/openrouter/env.example .env   # set OPENROUTER_API_KEY
source examples/openrouter/load-env.sh
bash examples/aider/execute.sh
bash examples/run-all-dry-run.sh

See examples/README.md.

Documentation

Document Description
examples/README.md Per-client CLI smoke scripts
docs/README.md Documentation index
docs/configuration.md .env, OpenRouter, env vars
docs/control-layer.md *2tillm packages
docs/clients/ Per-client setup
packages/README.md Control layer quick reference
SUMD.md Architecture description
CHANGELOG.md Release history
TODO.md Remaining work

License

Licensed under Apache-2.0.

Download files

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

Source Distribution

tillm-0.1.37.tar.gz (34.0 kB view details)

Uploaded Source

Built Distribution

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

tillm-0.1.37-py3-none-any.whl (29.8 kB view details)

Uploaded Python 3

File details

Details for the file tillm-0.1.37.tar.gz.

File metadata

  • Download URL: tillm-0.1.37.tar.gz
  • Upload date:
  • Size: 34.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for tillm-0.1.37.tar.gz
Algorithm Hash digest
SHA256 da2517d06aea249da4723a0f72a287a8bee40bb83f90577b3336315ad4bd47e7
MD5 f2c1ecaac0a40d1019392665c4590afd
BLAKE2b-256 306a7eadb12bb9fec21a4a0266947b3bdb74dde693674a41180456f27278d8bb

See more details on using hashes here.

File details

Details for the file tillm-0.1.37-py3-none-any.whl.

File metadata

  • Download URL: tillm-0.1.37-py3-none-any.whl
  • Upload date:
  • Size: 29.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for tillm-0.1.37-py3-none-any.whl
Algorithm Hash digest
SHA256 bd6e8ed96d2d5cca010af541e14e80be1c5d4d02929048698d6654cfa78e198a
MD5 4ff0e3cc846ee496a2d63e4257d83cf0
BLAKE2b-256 09e943daeec78addf6d6ab4ac159a1ac53bd5e05f6cb5bd322988de64c4b3341

See more details on using hashes here.

Supported by

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