---
title: "Start (or return the already-running) install job for a fixed system target"
method: POST
path: "/api/v1/system/install/{target}"
tags: ["system"]
---

# Start (or return the already-running) install job for a fixed system target

`POST /api/v1/system/install/{target}`

## Path parameters

- `target` 'tmux' | 'gh' | 'claude' | 'codex' | 'opencode' | 'copilot' | 'cloudflared', required — Install target identifier: tmux, gh, claude, codex, opencode, copilot, or cloudflared.

## Response `202`

Accepted

- InstallJob
  - `command` string — Human-readable install command, e.g. "brew install tmux", for display even before/without output.
  - `error` string — Set on failure or when the target is unsupported on this machine: the exec error, the Unsupported reason, or a timeout message.
  - `expectedDestination` string — Expected or adapter-resolved executable destination.
  - `finishedAt` string, date-time, nullable — Absent until the job finishes.
  - `method` string — Server-owned installation method selected for this harness job.
  - `output` string — Combined stdout+stderr from the install command, tail-capped to the last ~4000 bytes.
  - `startedAt` string, date-time, nullable
  - `status` 'idle' | 'running' | 'installing' | 'verifying' | 'succeeded' | 'failed' | 'unsupported' | 'interrupted', required — Current lifecycle state of the job.
  - `target` 'tmux' | 'gh' | 'claude' | 'claude-code' | 'codex' | 'cursor' | 'opencode' | 'aider' | 'copilot' | 'grok' | 'kimi' | 'pi' | 'amp' | 'auggie' | 'droid' | 'crush' | 'cline' | 'goose' | 'qwen' | 'continue' | 'devin' | 'kiro' | 'kilocode' | 'vibe' | 'muse' | 'agy' | 'autohand' | 'kimchi' | 'prime-agent' | 'omp' | 'cloudflared', required — Fixed install target this job ran (or is running) for.
  - `updatedAt` string, date-time, nullable

## Other responses

- `400` — Bad Request
- `500` — Internal Server Error
- `501` — Not Implemented

## Changes

- **2026-09-03** `d31a2d019c47` — 3 info
  - added the optional property `reporting_owner` to the response with the `400` status
  - added the optional property `reporting_owner` to the response with the `500` status
  - added the optional property `reporting_owner` to the response with the `501` status
- **2026-09-02** `dbac6f893348` — 1 breaking, 27 warning, 10 info
  - the `path` request parameter `target` was restricted to a list of enum values
  - added the new `agy` enum value to the `target` response property for the response status `202`
  - added the new `aider` enum value to the `target` response property for the response status `202`
  - added the new `amp` enum value to the `target` response property for the response status `202`
  - …34 more
- **2026-08-31** `09f65272fe44` — 1 warning
  - added the new `cloudflared` enum value to the `target` response property for the response status `202`
- **2026-08-21** `c0ee64eaeae5` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/composiohq/apis/agent-orchestrator-http-daemon/changes/api/v1/system/install/:target/post.md)

---

[API](https://skmtc.dev/composiohq/apis/agent-orchestrator-http-daemon.md) · [All operations](https://skmtc.dev/composiohq/apis/agent-orchestrator-http-daemon/llms.txt) · [OpenAPI document](https://skmtc.dev/composiohq/apis/agent-orchestrator-http-daemon/revisions/460522f9c5fd?raw)
