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

AI Cost AI Model

This project uses AI-generated code. Total cost: $11.1812 with 37 AI commits.

Generated on 2026-06-29 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.35.tar.gz (33.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.35-py3-none-any.whl (29.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: tillm-0.1.35.tar.gz
  • Upload date:
  • Size: 33.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.35.tar.gz
Algorithm Hash digest
SHA256 2f5210f24c407cd32cf76891c8df6419487cbe87c95e4af0e7e9deae4d464a7e
MD5 c7dbd0f1c60915dbf22797cc45062a24
BLAKE2b-256 c1814f2bf9d0e80d71e6af1c540c34b7c7d5acb00daa91d3f740580f6f5768b1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tillm-0.1.35-py3-none-any.whl
  • Upload date:
  • Size: 29.1 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.35-py3-none-any.whl
Algorithm Hash digest
SHA256 7608e0e26c8ec0b4f87dacdbbacbeb2a5905b0af2fe192bb51ad920a4bf73dd3
MD5 1c874b67240772166dcdec1a96b9f17d
BLAKE2b-256 7338e24c090a59a1efdae36ceace6f358d16478d08480cf0534cd0105976f2b0

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