# argus-agent

> Talos next · Since next

The Talos agent interface (MCP over stdio)

## Usage

```sh
argus-agent [OPTIONS] [COMMAND]
```

## Commands

| Command | Description |
|---|---|
| `tools` | Print the tool list as `tools/list` returns it, and stop. For reading, and for a diff that catches a schema changing under a client |
| `self-info` | Print the Talos export payload appended to this executable, as the launcher's `--info` does |
| `setup` | Connect a person's own AI client to a project in one step: write the project's `.mcp.json` (what Claude Code reads) with this `argus-agent` as the `argus` server, keeping any other servers there. `--print` prints the same config instead, for any other MCP client |
| `mcp` | Connect AI tools: `mcp install --for <tool>` |
| `replay` | Play a recorded assistant session again against a project: the same engine calls that landed a change, as an agent of the same name, with its recorded narration printed as `stream-json` at its recorded times (`crate::replay`). For footage and demos with no model run |
| `foliage-preset` | Plant a scene's terrain over an area with a foliage preset: the `foliage.preset` tool, run once. A re-run replaces the preset's earlier planting. Prints the tool's JSON answer |

## Options

| Flag | Value | Default | Allowed values | Description |
|---|---|---|---|---|
| `--project` | `<PROJECT>` |  |  | Open this project before the first request, so a client configured for one project does not have to call project.open itself |
| `--tool-names` | `<TOOL_NAMES>` | `dotted` |  | How `tools/list` spells the names. `dotted` is the interface's own (`scene.read`); `underscore` is for a client that namespaces a tool into an identifier and will not take a dot (`scene__read`); `hyphen` for one that also takes no `__` inside a tool's name (Grok: `scene-read`). `tools/call` takes any spelling whichever this is |
| `--toolsets` | `<TOOLSETS>` | `""` |  | Toolsets to list from the start, beyond the core: comma-separated names, or `all`. For a client that does not refetch `tools/list` when told it changed; one that does can call `tools.enable` instead and pay for the tools only when it needs them. ARGUS_AGENT_TOOLSETS when absent, so a harness can set it for every server it starts |
| `--defer-tools` |  |  |  | Leave the listed tools for the client to defer. Unset, each is marked `_meta["anthropic/alwaysLoad"]`, so Claude Code loads it rather than hiding it behind its tool search, which costs an agent a turn per batch it loads |
| `--agent-name` | `<AGENT_NAME>` |  |  | What this agent is called: its actor becomes `<name>-<4 hex>`, so the journal, the roster and the human's editor tell it from every other agent. ARGUS_AGENT_NAME when absent, then the client's own name |
| `--client` | `<CLIENT>` |  |  | Which AI client starts this server (`claude`, `codex`, `cursor`, `gemini`, `grok`, `vscode`, ...), as `mcp install --for` writes it: the name the person's editor shows for it ("Codex"). Without it, the client's own `initialize` name, else "External agent" |
| `--log` | `<LOG>` |  |  | Also write this server's messages here. Standard error is where they go otherwise, and a client that discards standard error has nowhere else to look |

## Example

```sh
argus-agent [COMMAND]
```
