Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add instructions/littlebearapps/untether/gemini-mdgit clone --depth 1 https://github.com/littlebearapps/untetherWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00500 | $0.00500 |
| Opus 5 | $0.00250 | $0.00250 |
| Sonnet 5 | $0.00100 | $0.00100 |
| Haiku 4.5 | $0.00050 | $0.00050 |
Grade A, and why
untether GEMINI.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 51 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Untether — Gemini Instructions
Telegram bridge for AI coding agents. Control Claude Code, Codex, OpenCode, Pi, Gemini CLI, and Amp from your phone or any device — agents run on your machine in the background while you're away from the terminal. Features interactive permissions, voice input, cost tracking, and live progress streaming.
Stack & conventions
- Python 3.12+, anyio for async, msgspec for JSONL parsing, structlog for logging
- Ruff for linting/formatting, pytest + anyio for testing (80% coverage threshold)
- Australian English in user-facing text (realise, colour, behaviour, licence)
- Conventional commits: feat:, fix:, docs:, refactor:, test:
Architecture
Telegram <-> TelegramPresenter <-> RunnerBridge <-> Runner
|
ProgressTracker
- Runners (src/untether/runners/) — engine subprocess managers
- RunnerBridge (src/untether/runner_bridge.py) — connects runners to transport
- TelegramPresenter (src/untether/telegram/bridge.py) — message rendering
- Commands (src/untether/telegram/commands/) — Telegram command handlers
- Schemas (src/untether/schemas/) — msgspec structs for JSONL decoding
Key rules
- Runner 3-event contract: StartedEvent -> ActionEvent(s) -> CompletedEvent (always)
- Use EventFactory for event construction, never construct dataclasses directly
- ALL Telegram writes go through TelegramOutbox (never call Bot API directly)
- Callback data max 64 bytes (Telegram-enforced)
- Use anyio (not raw asyncio), msgspec.Struct (not dataclasses for schemas)
Testing
- Stub subprocess runners with fake CLI scripts
- FakeTransport protocol doubles (not real Telegram clients)
- Verify 3-event contract in runner tests
- Run: uv run pytest, uv run ruff check src/
Key files
- runners/claude.py — Claude Code runner with interactive features
- runners/gemini.py — Gemini CLI runner
- runners/amp.py — AMP CLI runner (Sourcegraph)
- runner_bridge.py — Runner-to-transport bridge
- cost_tracker.py — Per-run/daily cost tracking
- telegram/bridge.py — Telegram message rendering
- commands/claude_control.py — Approve/Deny/Discuss callback handler
- markdown.py — Progress/final message formatting
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 3d ago First seen · 51 lines · 500 tokens per session scan A 414e97fe7105
untether GEMINI.md is an instructions file published in the GitHub repository littlebearapps/untether (66 stars, last pushed 3d ago), licensed MIT. It adds 500 tokens to every session, about $0.0025 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other instructions, from other repositories
golembot CLAUDE.md
Instructions for 0xranx/golembot, covering golembot — project conventions for claude code, architecture hard constraints, things you must never do, interface change rules and file responsibility boundaries.
OpenCode-GraphAgent CLAUDE.md
Instructions for LeXwDeX/OpenCode-GraphAgent, covering claude.md, what this is, commands, quality gates and build & codegen.
superset CLAUDE.md
Claude Code instructions for superset-sh/superset, a project described as: Superset is an agentic IDE to orchestrate 100+ coding agents in parallel. Run any agent with your own subscription.
give-me-job AGENTS.md
Instructions for kyoungbinkim/give-me-job, covering give-me-job repository instructions, default workflow, skill routing, working on this repository and development loop.
nexus-mcp AGENTS.md
Instructions for j7an/nexus-mcp, covering agents.md - guidelines for ai coding agents, project overview, build, lint, test commands, setup (first time) and run all tests (unit + e2e, fast).
claude-tui AGENTS.md
Instructions for slima4/claude-tui, covering agents.md, quick commands, testing, gotchas (hard-won knowledge) and local development.