Oh-My-Pi Daemon Backend — Flag Discovery Entrypoint
The installed CLI's own help is the authority for Oh-My-Pi (npm package
@oh-my-pi/pi-coding-agent, binary omp) flags; this page is only the
entrypoint. Conversion rules, key safety, and persistence live in the parent
reference/cli-backends/SKILL.md. omp is an accepted
backend alias that canonicalizes to oh-my-pi; persisted daemon entries use the
canonical name.
Discover flags from the installed CLI
- Run, in bash:
omp --versionandomp --help. The daemon backend wraps the rootompinvocation (no subcommand), so the root help is the relevant flag surface. These are local read-only commands; no session is started. Runomp <command> --helponly on demand for a subcommand the installed root help itself lists — subcommands are outside the daemon wrapper. - Translate what you found into
backend_optionswith the parent's generic conversion rules. Nothing Oh-My-Pi-specific is added to that contract here.
Example: model selection
{
"backend": "oh-my-pi",
"tasks": [{
"task": "Implement and validate the change.",
"tools": [],
"backend_options": {
"model": "<model id from the installed CLI>"
}
}]
}
// argv: --model <model id from the installed CLI>
The model vocabulary belongs to the installed CLI and its configured providers —
LingTai does not validate, enumerate, or simulate model ids. Use the CLI's own
discovery surface (root --help) and pass the id through.
Subscription & auth
Per-provider keys through the CLI's own config; LingTai does not inject or rotate credentials.
Official docs: https://github.com/pi-coding-agent/pi-coding-agent
Harness boundary: reserved flags
The daemon owns Oh-My-Pi's non-interactive JSON harness
(omp --mode json --approval-mode yolo <task>). backend_options refuses
exactly these reserved flags before spawn (one bad key refuses the whole
batch):
--mode, --print, --auto-approve, --yolo, --approval-mode,
--session, --resume, --continue, --no-session, --session-dir
Keys are written without leading dashes, and underscores become dashes, so
{"approval_mode": "write"} targets --approval-mode and is refused.
Overriding these would break JSON event capture, re-enable interactive
prompting, or hijack session ownership.
Session, ask, and MCP status
- The first
type:sessionJSON header line carries the resumable session id; the OpenCode-family parser stores it asoh_my_pi_session_idindaemon.json. askis async and resumes viaomp --mode json --approval-mode yolo --session <id> <message>; emanate-timebackend_optionspersist for the session and are not re-passed.- Per-run
daemon_commonMCP injection is not wired yet for this backend (pending source evidence of an accepted config/env path), so the MCPfinishcompletion contract does not apply here — andbackend_optionsis not the place to hand-wire MCP.