Assign tickets to headless Claude Code sessions from a phone

Panth Patel, who leads software at Oizom, gives Claude Code work through tickets: a 944-line orchestrator starts one headless session per ticket and posts each turn's cost back to the thread.

Done withClaude Code· Oct 26, 2026

What they did

Patel wanted to hand work to a VM from a phone without opening a door into that machine, and built a ticket tracker on Firebase and a 944-line orchestrator with no dependencies that runs on the VM. Each agent is a board member with its own token. When a ticket assigned to it moves to To do, the orchestrator claims it and starts claude -p in the linked repo with the tracker's MCP tools, minus the ones that move or reassign tickets. The agent posts its plan as a task list, asks questions through a form card and waits, and the answer resumes the same session. Patel open-sourced both on 27 September.

How it went

Patel uses it to raise tickets while travelling or while the VM is offline, and the VM and a PC take work from the same board. A heartbeat every minute drives a health dot on each ticket, and the owner is notified after five minutes of silence. Per-turn cost receipts exposed one ticket that had reached $402 over nine runs before the app showed it. The per-ticket branches, services and preview URLs used at work are not in the open-source version.

Worth knowing

Agents run unattended in your working tree. The template uses acceptEdits, and Patel says to use bypassPermissions only if you trust the brief and the repo. Claude Code's total_cost_usd is cumulative across resumed sessions, so the orchestrator posts the difference per turn. Self-hosting means your own Firebase project on the paid plan.

Try it

With Claude Code· 3 parts to fill in

You run headless in [my repo] and nobody is watching your terminal. Read the ticket [ticket id] and its whole thread in [my tracker], then post your plan on the ticket as a task list and tick items off as you work. When you need a decision, ask it on the ticket and stop, rather than guessing. Do not move, reassign or create tickets. Put everything you want me to see on the ticket, and when the work is done and the tests pass, report it as ready for review and stop.

Square brackets are the parts to fill in. The prompt is ours; the story is theirs.

Where they said it

Related