# axx host

> Start the services for runs that cannot start them, like an agent's in a sandbox without Docker

Source: https://axx.nimbusxr.us/next/references/cli/axx-host/

Serve the project's runs that cannot start its services themselves: an agent's,
in a sandbox that keeps it from Docker. Start it in the project, on your own
machine, and leave it running. It listens on a loopback port and writes
.axx/host.json, which Axx finds there in the sandbox: each `axx run`, `axx up`
and MCP session asks the host for its services. The host cleans up, starts them as
axx.yaml says, and stops them and runs their cleanup when the run ends, or when its
connection does. The scenarios run where Axx runs: the sandbox's rules apply to them.
Runs take turns with the services.

Only a definition you approved starts: axx.yaml's services, what each compose
project they run resolves to, and the files their commands run. Starting the host
approves it as it is, unless it changed since you last approved one: then it asks
you as it starts. When the definition changes, the host asks you here, with the
difference and what in it reaches past a container (privileged containers, this
machine's files, the Docker socket, its network). A run waits a minute for your y
or n; the question stays open after, and the next run has your answer. A change you
refuse is refused again until the host restarts. Approvals are kept in your
configuration directory, outside the project.

With --ide, an editor that started the host asks instead: the host writes its
events as lines of JSON and reads the editor's answers on its standard input.

```text
Usage:
  axx host [flags]

Flags:
      --addr string          the address to listen on (port 0: one the system picks) (default "127.0.0.1:0")
  -D, --define stringArray   set a property for ${sys:name}, e.g. -D local.host=docker
  -h, --help                 help for host
      --ide                  talk to the editor that started the host: events as JSON lines on stdout, its answers on stdin
      --profile string       apply profiles.<name> / axx.<name>.yaml, several comma-separated in order, like watch,ios (env: AXX_PROFILE)
      --set stringArray      set a key of axx.yaml for this run, over its files and profiles, e.g. --set run.workers=1 or --set packs.<pack>.<key>=value

Global Flags:
      --compact         print only what matters (auto-enabled for coding agents)
  -c, --config string   path to axx.yaml (default: search upward from the working directory)
      --json            emit machine-readable JSON (stable envelope)
      --no-color        disable colored output
  -v, --verbose count   increase log verbosity (-v, -vv)
```
