# CLI Reference

Huskies ships as a single binary. Most interaction happens through the web UI or chat transports, but the CLI is used for initial setup and server control.

## huskies

Start the huskies server.

    huskies [OPTIONS]

### Options

Flag | Default | Description
--- | --- | ---
--port <PORT> | 3000 | HTTP port to listen on. Set the `HUSKIES_PORT` environment variable as an alternative.
--project <PATH> | current dir | Path to the project directory. Huskies looks for `.huskies/` here.
--help | — | Print help and exit.
--version | — | Print version and exit.

### Examples

    # Start on the default port
    huskies

    # Start on a custom port
    huskies --port 3001

    # Specify project directory explicitly
    huskies --project /path/to/project --port 3000

    # Using environment variable
    HUSKIES_PORT=3002 huskies

Multiple instances: Each worktree or project can run its own huskies instance on a different port. Use `HUSKIES_PORT` to avoid conflicts when running several instances simultaneously.

## huskies init

Initialise a project directory for use with huskies. Creates the `.huskies/` directory structure, default configuration files, and `.mcp.json`.

    huskies init [OPTIONS]

### Options

Flag | Default | Description
--- | --- | ---
--port <PORT> | 3000 | Port written into `.mcp.json` for MCP tool discovery.
--project <PATH> | current dir | Directory to initialise. Must be a git repository.
--help | — | Print help and exit.

### What it creates

Path | Description
--- | ---
`.huskies/project.toml` | Project-wide settings (QA mode, agent limits, timezone, etc.).
`.huskies/agents.toml` | Agent definitions for coder, QA, and mergemaster roles.
`.huskies/work/1_backlog/` | Pipeline stage directories (1 through 6).
`.huskies/specs/00_CONTEXT.md` | Placeholder project context file for the setup wizard.
`.huskies/specs/tech/STACK.md` | Placeholder tech stack file for the setup wizard.
`.mcp.json` | MCP server config so Claude Code discovers huskies' tools automatically.

Git required: The project directory must be a git repository. Run `git init` first if needed.

## huskies agent

Spawn a single agent process directly from the command line. This is the command the server uses internally when you run `start <number>` in chat — you rarely need to invoke it manually.

    huskies agent [OPTIONS]

### Options

Flag | Description
--- | ---
--story <ID> | Story ID slug to work on (e.g. `42_story_add_login`).
--agent <NAME> | Agent name from `agents.toml` to use (e.g. `coder-1`, `qa`).
--worktree <PATH> | Path to the git worktree the agent should work in.
--port <PORT> | Huskies server port, so the agent can call MCP tools.
--help | Print help and exit.

## Environment variables

Variable | Description
--- | ---
`HUSKIES_PORT` | Server port. Overrides the `--port` flag.
`ANTHROPIC_API_KEY` | Anthropic API key for agent sessions. Can also be set via the web UI on first use.
`GITEA_TOKEN` | Gitea API token used by the `script/release` script when publishing releases.

## Building from source

### Standard release build

    cargo build --release
    # Output: target/release/huskies

### Static Linux binary (musl)

Requires `cross`: `cargo install cross`.

    cross build --release --target x86_64-unknown-linux-musl

### Docker image

    docker compose -f docker/docker-compose.yml build

### Release script

Builds macOS arm64 and Linux amd64 binaries, bumps the version, tags the repo, and publishes a Gitea release with changelog and binaries attached.

    script/release 0.8.0