{"id":51339720,"url":"https://github.com/semcod/tillm","last_synced_at":"2026-07-02T06:04:57.396Z","repository":{"id":362294262,"uuid":"1258235040","full_name":"semcod/tillm","owner":"semcod","description":"Text-interface LLM control plane for semcod/coru shell automation (pair with gillm for GUI).","archived":false,"fork":false,"pushed_at":"2026-06-18T11:26:10.000Z","size":2496,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-18T13:18:03.717Z","etag":null,"topics":["aider","automation","claude","cli","codex","llm","python","semcod","shell"],"latest_commit_sha":null,"homepage":"https://semcod.github.io/tillm/","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/semcod.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-03T11:49:16.000Z","updated_at":"2026-06-18T11:59:43.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/semcod/tillm","commit_stats":null,"previous_names":["semcod/sllm","semcod/sillm","semcod/tillm"],"tags_count":29,"template":false,"template_full_name":null,"purl":"pkg:github/semcod/tillm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semcod%2Ftillm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semcod%2Ftillm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semcod%2Ftillm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semcod%2Ftillm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/semcod","download_url":"https://codeload.github.com/semcod/tillm/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/semcod%2Ftillm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35035011,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-02T02:00:06.368Z","response_time":173,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aider","automation","claude","cli","codex","llm","python","semcod","shell"],"created_at":"2026-07-02T06:04:56.580Z","updated_at":"2026-07-02T06:04:57.384Z","avatar_url":"https://github.com/semcod.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# tillm\n\n**Text-interface LLM control plane** for the semcod/coru ecosystem.\n\nDrives shell and terminal clients (`aider`, `claude`, `codex`, `gemini`, `qwen-code`, `opencode`, `devin`) from one registry and execution pipeline. Pair with [`gillm`](../gillm) for **graphical** control (focus, inject, capture, orchestrator DSL).\n\n![Version](https://img.shields.io/badge/version-0.1.35-blue) ![Python](https://img.shields.io/badge/python-3.11+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)\n\n## AI Cost Tracking\n\n![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-0.1.35-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)\n![AI Cost](https://img.shields.io/badge/AI%20Cost-$2.42-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-8.3h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fdeep%2Fdeep--v4--pro-lightgrey)\n\n- 🤖 **LLM usage:** $2.4161 (35 commits)\n- 👤 **Human dev:** ~$826 (8.3h @ $100/h, 30min dedup)\n\nGenerated on 2026-06-08 using [openrouter/deep/deep-v4-pro](https://openrouter.ai/deep/deep-v4-pro)\n\n---\n\n| Package | Interface | Role |\n| --- | --- | --- |\n| **tillm** | text / shell | vendor CLI registry, `drive`, multi-client matrix, transports |\n| **gillm** | graphical | GUI domain + `*2gillm` adapters (REST :8220, MCP, …) |\n\n## Contents\n\n- [Architecture](#architecture)\n- [Control layer packages](#control-layer-packages)\n- [Installation](#installation)\n- [Quick start](#quick-start)\n- [Shell clients](#shell-clients)\n- [Multi-client orchestration](#multi-client-orchestration)\n- [Configuration](#configuration)\n- [Version and updates](#version-and-updates)\n- [Testing](#testing)\n- [Documentation](#documentation)\n- [License](#license)\n\n## Architecture\n\n```\nSUMD (description) → DOQL/source (code) → taskfile (automation) → testql (verification)\n```\n\nSources: [`SUMD.md`](SUMD.md) · [`app.doql.less`](app.doql.less)\n\n```mermaid\nflowchart TB\n  subgraph adapters [Input adapters — packages]\n    NL[nlp2tillm]\n    URI[uri2tillm]\n    CLI[cli2tillm]\n    MCP[mcp2tillm]\n    REST[rest2tillm]\n  end\n\n  subgraph control [Control layer]\n    DSL[dsl2tillm.dispatch]\n    SCH[JSON Schema]\n    ES[(EventStore)]\n  end\n\n  subgraph domain [Domain — src/tillm]\n    REG[registry]\n    DRV[drive / matrix]\n    TR[binary / docker / http]\n  end\n\n  NL --\u003e DSL\n  URI --\u003e DSL\n  CLI --\u003e DSL\n  MCP --\u003e DSL\n  REST --\u003e DSL\n  DSL --\u003e SCH\n  DSL --\u003e REG\n  DSL --\u003e DRV\n  DRV --\u003e TR\n  DSL --\u003e ES\n```\n\n## Control layer packages\n\n| Package | Role | Port |\n| --- | --- | --- |\n| **dsl2tillm** | DSL + JSON Schema + CQRS bus | — |\n| **uri2tillm** | `tillm://` → DSL | — |\n| **nlp2tillm** | NL → DSL | — |\n| **cli2tillm** | Shell REPL | — |\n| **mcp2tillm** | MCP stdio | — |\n| **rest2tillm** | FastAPI `/v1/dsl` | **8216** |\n\nDetails: [docs/control-layer.md](docs/control-layer.md) · [packages/README.md](packages/README.md)\n\n## Installation\n\n### Core (editable dev)\n\n```bash\ngit clone \u003crepo\u003e tillm \u0026\u0026 cd tillm\npip install -e \".[dev]\"\n```\n\n### Control layer (all `*2tillm` packages)\n\n```bash\nbash packages/install-dev.sh\n```\n\n### Optional ecosystem siblings\n\n```bash\npip install -e ../nlp2dsl ../intract ../redsl ../proxym ../llx   # adjust paths\n```\n\n\u003e **Note:** `tillm` and `*2tillm` are not yet published on PyPI. Use editable installs from the repo.\n\n## Quick start\n\n```bash\n# List registered shell clients\ntillm clients\n\n# Dry-run (plans command, saves prompt, does not execute)\ntillm drive --client aider --prompt \"Refactor ticket PLF-1\"\n\n# Execute (requires client env vars — see configuration)\ntillm drive --client aider --prompt \"Refactor ticket PLF-1\" --execute\n\n# NLP → drive intent\ntillm nlp \"aider: napraw testy\"\n\n# Ecosystem validation\ntillm validate\n\n# Control layer\ndsl2tillm exec HEALTH\nrest2tillm serve --port 8216\n```\n\n`tillm drive` always saves the prompt under `.koru/tillm/prompts/` before dry-run or execute.\n\n## Shell clients\n\nEight clients in the registry. Live status: `tillm clients` (`ok` / `~` / `--`).\n\n| Client | Headless | Automation profile |\n| --- | --- | --- |\n| claude-code | `claude -p` | `--dangerously-skip-permissions` |\n| aider | `--message-file` | — |\n| codex | `codex exec` | `--dangerously-bypass-approvals-and-sandbox` |\n| gemini-cli | `gemini -p` | `--yolo` |\n| qwen-code | `qwen -p` | — |\n| opencode | `opencode run` | — |\n| devin | `devin -p` | `--permission-mode dangerous` |\n| cline | dry-run only | — |\n\nPer-client setup: [docs/clients/](docs/clients/)\n\n## Multi-client orchestration\n\n```bash\ntillm drive --clients aider,codex --prompt \"review auth\" --parallel 2\ntillm drive --all --prompt \"review\" --execute --profile automation\ntillm drive --all --prompt \"review\" --quorum 2 --fail-fast\n```\n\nDSL equivalent:\n\n```text\nDRIVE_MATRIX CLIENTS aider,codex PROMPT \"review\" PARALLEL 2\nDRIVE_MATRIX ALL PROMPT \"review\" EXECUTE true PROFILE automation\n```\n\n## Configuration\n\nCopy `.env.example` → `.env`. tillm **auto-loads** `\u003cproject\u003e/.env` (via `project_env` + optional `env2llm`):\n\n```bash\n# .env — tillm reads this automatically from project root\nOPENROUTER_API_KEY=sk-or-v1-...\nLLM_MODEL=openrouter/deepseek/deepseek-v4-pro\nAIDER_MODEL=openrouter/deepseek/deepseek-v4-pro   # optional; defaults from LLM_MODEL\n\ntillm drive --client aider --prompt \"fix tests\" --execute\n```\n\nInstall env2llm integration: `pip install -e \".[env]\"` or `pip install -e ../env2llm`\n\nFull reference: [docs/configuration.md](docs/configuration.md)\n\n### Environment variables\n\n| Variable | Default | Purpose |\n| --- | --- | --- |\n| `TILLM_DEFAULT_CLIENT` | `aider` | Default for `tillm nlp` |\n| `TILLM_EXECUTE_PROFILE` | `default` | `automation` for CI |\n| `TILLM_BACKEND` | `binary` | `docker` for compose exec |\n| `TILLM_NLP2DSL` | off | External NLP2DSL bridge |\n\n### Optional NLP2DSL bridge\n\n```bash\nexport TILLM_NLP2DSL=1\nexport NLP2DSL_BACKEND_URL=http://localhost:8010\ntillm nlp \"uruchom claude dla ticketu PLF-123\"\n```\n\nWithout the service, tillm uses a deterministic local parser.\n\n## Version and updates\n\n### Check installed version\n\n```bash\npip show tillm | grep Version          # core: 0.1.32\ncat VERSION\npip show dsl2tillm rest2tillm         # control layer: 0.1.0\ntillm clients\ntillm validate\n```\n\n### Update from repo (current workflow)\n\n```bash\ncd tillm\ngit pull\npip install -e \".[dev]\"\nbash packages/install-dev.sh\npython -m pytest tests/test_tillm.py packages/*/tests -q\n```\n\n### Update vendor CLIs (independent)\n\n```bash\npip install -U aider-chat\nnpm update -g @anthropic-ai/claude-code @openai/codex @google/gemini-cli\n```\n\nWhen published to PyPI:\n\n```bash\npip install -U tillm dsl2tillm uri2tillm nlp2tillm cli2tillm mcp2tillm rest2tillm\n```\n\n## Testing\n\n```bash\npython -m pytest tests/test_tillm.py packages/*/tests -q\ndsl2tillm validate-schema\ndsl2tillm exec HEALTH\n```\n\n## Examples\n\nRunnable smoke tests per shell client (OpenRouter + tillm):\n\n```bash\ncp examples/openrouter/env.example .env   # set OPENROUTER_API_KEY\nsource examples/openrouter/load-env.sh\nbash examples/aider/execute.sh\nbash examples/run-all-dry-run.sh\n```\n\nSee [examples/README.md](examples/README.md).\n\n## Documentation\n\n| Document | Description |\n| --- | --- |\n| [examples/README.md](examples/README.md) | Per-client CLI smoke scripts |\n| [docs/README.md](docs/README.md) | Documentation index |\n| [docs/configuration.md](docs/configuration.md) | `.env`, OpenRouter, env vars |\n| [docs/control-layer.md](docs/control-layer.md) | `*2tillm` packages |\n| [docs/clients/](docs/clients/) | Per-client setup |\n| [packages/README.md](packages/README.md) | Control layer quick reference |\n| [SUMD.md](SUMD.md) | Architecture description |\n| [CHANGELOG.md](CHANGELOG.md) | Release history |\n| [TODO.md](TODO.md) | Remaining work |\n\n## License\n\nLicensed under Apache-2.0.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsemcod%2Ftillm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsemcod%2Ftillm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsemcod%2Ftillm/lists"}