Skip to content
Agentmart
Submit a tool

telegram-detached-worker

Start, report from, and tear down a detached tmux worker that keeps working after the current Telegram Control-managed turn ends, posting its progress into a…

Skill by shantamg

IndexedApache-2.0
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/shantamg-telegram-detached-worker

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Start, report from, and tear down a detached tmux worker that keeps working after the current Telegram Control-managed turn ends, posting its progress into a Telegram topic of its own. Use implicitly whenever the user asks to run something in the background that must outlive this turn, to kick off a long job and be kept updated, to start a detached or tmux session for a task, or to stop or clean up one that is finished. The user does not need to mention this skill by name.

Use cases: documents, productivity

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/telegram-detached-worker

What's inside

Skill name
telegram-detached-worker
Description
Start, report from, and tear down a detached tmux worker that keeps working after the current Telegram Control-managed turn ends, posting its progress into a Telegram topic of its own. Use implicitly whenever the user asks to run something in the background that must outlive this turn, to kick off a long job and be kept updated, to start a detached or tmux session for a task, or to stop or clean up one that is finished. The user does not need to mention this skill by name.
License
Apache-2.0
Instructions
116 lines in SKILL.md · view on GitHub

Files (1)

  • SKILL.md

SKILL.md (first lines)

# Detached Telegram Worker

A managed turn is one-shot: this process is torn down as soon as you reply, and
anything you started in the background dies with it. Work that must keep going —
a long refactor, a review loop, a migration — belongs in a detached worker. The
tmux server is a daemon rather than a child of this turn, so the session
survives. Across a reboot, Telegram Control recreates tmux and resumes the exact
provider conversation.

Each worker gets its own Telegram topic in the same group, and that topic is
**report-only**: the worker posts progress there, and the project's main topic
stays conversational. The user talks to you; you relay to the worker.

Use this only inside a Telegram Control-managed turn.

## Starting a worker

Pick a short lowercase slug for the worker (`rails-fix`, `inbox-triage`). It
names both the tmux session and the topic.

```bash
/usr/bin/python3 {{TELEGRAM_CONTROL_ROOT}}/telegram_control.py \
  worker-start <name> --provider claude --model opus --effort high
```

- `--provider` takes `claude` or `codex`. Ask the user if they have not said.
- `--model` and `--effort` are optional; omit them to inherit local defaults.
- The command creates the topic (idempotent), starts the tmux session, and
  prints the session name and topic.
- The launch prompt tells the worker only who it is and that it should keep
  using its own native scheduling, wakeup, loop, and background features. It is
  not asked to keep any recovery inventory.

Then give the worker its task. **Write the brief to a file first** and point the
worker at it — briefs are long, and typing one through `send-keys` is fragile:

```bash
/usr/bin/python3 {{TELEGRAM_CONTROL_ROOT}}/telegram_control.py \
  worker-brief <name> --file /absolute/path/to/BRIEF.md
```

A good brief states the goal, the constraints, what "done" looks like, and
explicitly tells the worker to report at milestones (see below). Include
anything the worker cannot discover for itself — it does not inherit your
conversation.

The brief is delivered verbatim, with nothing prepended.

Recovery is deliberately thin. Resuming the exact provider session ID restores
the conversation and its scheduled work, so the recovery turn only asks the
worker to check that its scheduled tasks, wakeups, loops, and monitors are still
active, recreate anything missing, and confirm success or failure; the
controller sends the result through its durable Telegram outbox.

## Making the worker report

Tell the worker, in its brief, to run this whenever it reaches a milestone:

```bash
/usr/bin/python3 {{TELEGRAM_CONTROL_ROOT}}/telegram_control.py \
  worker-report <name> --key <unique-slug> <<'EOF'
Spoken-style progress update.
EOF
```

Add `--text` for a written message instead of a voice note. Voice text is
converted to speech, so it must be plain spoken prose: no markdown, no file
paths, no line numbers, no code.

## Checking on a worker

```bash
/usr/bin/python3 {{TELEGRAM_CONTROL_ROOT}}/telegram_control.py worker-status
```

Reports each worker's intended and observed state. `intended running` with
`observed stopped` means it died rather than being shut down. Recovery status
also shows whether the provider session is persisted, the recovery-file path,
and the last recovery error.

To read what a worker is actually doing, capture its pane:

```bash
tmux capture-pane -p -t detached--<name> | tail -40
```

When polling a pane, do not grep for text you typed into it — your own prompt
is in the buffer and will match. Check for a real artifact instead.

## Tearing a worker down

When the user says the work is finished:

```bash
/usr/bin/python3 {{TELEGRAM_CONTROL_ROOT}}/telegram_control.py \
  worker-stop <name> [--delete-topic]
```

**Ask the user whether to delete the topic** before passing `--delete-topic`.
Stopping always kills the session; deleting the topic also removes the history,
which they may want to keep. Without the flag the topic stays. In both cases,
the worker row and its exact controller-managed `RECOVERY.md` are removed; an
unexpected companion file is preserved rather than recursively deleted.

## Rules

- One worker per task. Reuse the name to find an existing one rather than
  starting a second session for the same work.
- Never point a worker at a repository the user has not asked you to work in.
- The worker runs with the same permissions you do. Say so if the user asks for
  something destructive to run unattended.
- Do not tell the user to reply in the worker's topic — nothing there reaches
  the worker. Relay their instructions yourself.
- Report a worker as started only after the command succeeds.

From shantamg/telegram-control, Apache-2.0.

Signals

Stars
0
Forks
0
Open issues
0
Last commit (this folder)
Jul 27, 2026 (3 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
Apache-2.0
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from shantamg

Cite this page

telegram-detached-worker skill. Agent Mart. https://agentmart.dev/skills/shantamg-telegram-detached-worker (last updated 2026-10-24)