Install
openclaw skills install oneshot-shipShip code with oneshot CLI. One command that plans, executes, reviews, and opens a PR. Runs over SSH or locally. Use when the user wants to ship code changes, automate PRs, or run a coding pipeline with Codex or Claude.
openclaw skills install oneshot-shipShip code with a single command. oneshot is an agentic software workflow runtime: repo + task in, isolated agent run out, reviewed PR ready. It runs with one selected fallback provider, or with invisible adaptive routing when routing.enabled is true. The router chooses Codex or Claude plus reasoning effort, while each provider stays on its configured frontier model. Works over SSH to a remote server or locally with --local.
bun install -g oneshot-ship
Run oneshot init to configure SSH host, workspace path, API keys, and model preferences. Config is saved to ~/.oneshot/config.json.
Repos on the server should live as <org>/<repo> under the workspace path:
~/projects/
my-org/my-app/
my-org/my-api/
OPENAI_API_KEY for Codex mode, or ANTHROPIC_API_KEY for Claude modeoneshot <repo> "<task>" # ship a task
oneshot <repo> <linear-url> # ship from a Linear ticket
oneshot <repo> "<task>" --bg # fire and forget
oneshot <repo> "<task>" --local # run locally, no SSH
oneshot <repo> "<task>" --mode deep # skip classification and force deep mode
oneshot <repo> "<task>" --workflow ship # apply a workflow preset
oneshot <repo> "<task>" --deep-review # force exhaustive review
oneshot <repo> "<task>" --model gpt-5.5 # override configured plan/PR model
oneshot <repo> "<task>" --branch dev # target a different branch
oneshot <repo> "<task>" --base-path /srv/workspaces # override repo root for this run
oneshot <repo> "<task>" --worktree-root /tmp/agents # override temp worktree root
oneshot route "fix failing CI and publish" --json # inspect invisible route
oneshot <repo> --dry-run # validate only
oneshot init # configure
oneshot stats # recent runs + timing
oneshot runs # durable run ledger
oneshot runs --json --limit 10 # list runs for automation
oneshot status <run-id|events-file> --json # inspect one run
oneshot eval --json # summarize outcomes
oneshot workflow list # inspect workflow presets
oneshot workflow show fix-ci --json # inspect one workflow preset
oneshot policy init # create .oneshot/policy.json
oneshot policy init --path ./repo # write policy in another directory
oneshot mcp serve # expose MCP tools over stdio
oneshot doctor # package, tool, SSH, and event health
oneshot doctor --repo zkp2p/pay # health plus checkout existence
fast/deep modeAGENTS.md/CLAUDE.md instructions, package scripts, policy packs, and relevant docs, then outputs an implementation planEvery run writes JSONL events to /tmp/oneshot-<runId>.events.jsonl and mirrors them into ~/.oneshot/runs/<runId>.events.jsonl. Worktrees are cleaned up after successful runs and preserved on failure for recovery.
~/.oneshot/config.json:
{
"host": "user@100.x.x.x",
"basePath": "~/projects",
"provider": "codex",
"routing": { "enabled": true },
"linearApiKey": "lin_api_...",
"claude": { "model": "opus", "timeoutMinutes": 180 },
"codex": {
"model": "gpt-5.5",
"reasoningEffort": "xhigh",
"reviewModel": "gpt-5.5",
"reviewReasoningEffort": "xhigh",
"timeoutMinutes": 180
},
"phases": {
"classify": { "model": "gpt-5.5", "reasoningEffort": "medium" },
"plan": { "model": "gpt-5.5", "reasoningEffort": "xhigh" },
"execute": { "model": "gpt-5.5", "reasoningEffort": "xhigh" },
"review": { "model": "gpt-5.5", "reasoningEffort": "xhigh" },
"deepReview": { "model": "gpt-5.5", "reasoningEffort": "xhigh" },
"pr": { "model": "gpt-5.5", "reasoningEffort": "high" }
},
"stepTimeouts": {
"planMinutes": 20,
"executeMinutes": 60,
"reviewMinutes": 20,
"deepReviewMinutes": 20,
"prMinutes": 20
}
}
Only host is required for SSH runs. Local mode works without a config file.
Remote SSH runs stream the active oneshot config to the server for that run, so basePath, provider defaults, timeout settings, and configured Linear credentials stay aligned even if the server does not have its own oneshot config file.
| Flag | Short | Description |
|---|---|---|
--model | -m | Override configured plan/PR model |
--branch | -b | Base branch (default: main) |
--base-path | Override the workspace path used to locate the repo | |
--worktree-root | Override where temporary git worktrees are created | |
--mode | Skip classification and force fast or deep mode | |
--workflow | Apply a workflow preset: ship, review, fix-ci, research, docs, or swarm-review | |
--deep-review | Force exhaustive review mode | |
--local | Run locally instead of over SSH | |
--bg | Run in background, return PID + log path | |
--dry-run | -d | Validate only |
--events-file | Mirror JSONL events to an additional file | |
--repo | With doctor, verify a specific owner/repo checkout exists | |
--provider | With route, choose the fallback provider (codex or claude) | |
--help | -h | Help |
--version | -v | Version |
AGENTS.md or CLAUDE.md in any repo root. oneshot passes the instruction snapshot to the configured agents, and the prompts ask agents to inspect relevant local instruction files directlyprovider: "codex" or provider: "claude" as the fallback. Set routing.enabled: true when oneshot's adaptive router should silently pick Codex or Claude per taskclaude.model and codex.model as the frontier models for each provider. Adaptive routing varies effort and provider, not model classphases.classify, phases.plan, phases.execute, phases.review, phases.deepReview, and phases.pr for model and reasoning defaults when routing is disabledprompts/plan.txt, execute.txt, review.txt, pr.txt to change pipeline behavioroneshot policy init to add .oneshot/policy.json with protected paths, required checks, approval-sensitive keywords, and secret-pattern gatesoneshot mcp serve when another agent should call oneshot through tools instead of shelling out ad hocdocs/artifacts/; throwaway local artifacts belong in /tmp/oneshot-html-artifacts/.--bg to fire and forget long tasksfast or deep mode automatically. Use --deep-review to force deep~/.oneshot/history.json)~/.oneshot/runs; use oneshot runs, oneshot status, and oneshot eval for recovery and feedback loopsowner/repo values. Nested paths and .. are rejected before dispatchdoctor compares the running CLI version with the npm registry, checks config, required CLIs, recent event files, SSH reachability, and can verify a specific checkout with --repooneshot mcp serve exposes tools for running tasks, listing runs, reading status, initializing policy, listing workflows, and summarizing eval outcomes