> ## Documentation Index
> Fetch the complete documentation index at: https://docs.innate.bot/llms.txt
> Use this file to discover all available pages before exploring further.

# Innate CLI Reference

> Every command you need, on one page.

The `innate` CLI is your control panel. SSH into MARS and start typing.

<Tip>
  `in8` is a zsh alias for `innate`, available in any new shell.
</Tip>

## Default (no args)

| Command  | What it does                                                      |
| -------- | ----------------------------------------------------------------- |
| `innate` | Status dashboard — version, mode, ROS/DDS status, quick reference |

***

## Service management

Start, stop, and inspect all ROS nodes.

| Command                  | What it does                |
| ------------------------ | --------------------------- |
| `innate service start`   | Start all ROS nodes in tmux |
| `innate service stop`    | Kill the tmux session       |
| `innate service restart` | Stop + start                |
| `innate service view`    | Attach to the tmux session  |

### Top-level shortcuts

| Command          | Same as                  |
| ---------------- | ------------------------ |
| `innate view`    | `innate service view`    |
| `innate restart` | `innate service restart` |

***

## Build

Smart build that does the right thing automatically. If ROS nodes are running, it stops them, builds, and restarts them. If nodes aren't running, it just builds. If the build fails, nodes are not restarted.

| Command                          | What it does                                                                   |
| -------------------------------- | ------------------------------------------------------------------------------ |
| `innate build`                   | Build full workspace (stops/starts nodes if running)                           |
| `innate build pkg1 pkg2`         | Build specific packages only                                                   |
| `innate build release [pkg ...]` | Build with `CMAKE_BUILD_TYPE=Release` (whole workspace, or the named packages) |
| `innate clean`                   | Remove `build/`, `install/`, `log/`                                            |

### Examples

```bash theme={null}
innate build mars_arm          # build one package (restarts nodes if they're running)
innate build                   # build everything
innate build release           # optimized release build of everything
innate build release mars_arm  # optimized release build of one package
innate clean && innate build   # full clean rebuild
```

***

## Skills

List and trigger the robot's skills straight from the terminal — handy for testing a skill without the app.

| Command                                          | What it does                                               |
| ------------------------------------------------ | ---------------------------------------------------------- |
| `innate skill list`                              | List the skills the robot currently publishes              |
| `innate skill type <skill-id>`                   | Print a skill's input contract (the parameters it accepts) |
| `innate skill run <skill-id> [@param=value ...]` | Run a skill by ID, passing any inputs as `@key=value`      |

### Options

| Command             | Options                                                                                                                                                        |
| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `innate skill list` | `--timeout <sec>` — how long to wait for skills to be published (default 5)                                                                                    |
| `innate skill type` | `--timeout <sec>` (default 5) · `--json` — print the raw contract as JSON                                                                                      |
| `innate skill run`  | `--timeout <sec>` — wait for the skill result (`0`, the default, waits indefinitely) · `--server-timeout <sec>` — wait for the skill action server (default 5) |

### Examples

```bash theme={null}
innate skill list                                   # see what's available
innate skill type innate-os/wave --json             # contract as JSON
innate skill run innate-os/wave                     # run a skill with no inputs
innate skill run innate-os/arm_utils @command=torque_on --timeout 0
innate skill run local/my-skill @x=1 @name=alice    # pass parameters
```

<Tip>
  Skill IDs are prefixed by where they live — `innate-os/` for shipped skills, `local/` for your own. See [Skills](/software/skills) for how IDs are formed.
</Tip>

***

## Speaker volume

| Command                 | What it does                       |
| ----------------------- | ---------------------------------- |
| `innate volume`         | Show the current speaker volume    |
| `innate volume <0-100>` | Set the speaker volume (`0` mutes) |

### Examples

```bash theme={null}
innate volume        # show current volume
innate volume 60     # set to 60%
innate volume 0      # mute
```

***

## Diagnostics & updates

| Command                        | What it does                                                                                                            |
| ------------------------------ | ----------------------------------------------------------------------------------------------------------------------- |
| `innate diag`                  | Hardware check (servos, PCB, lidar, cameras, speaker) — offers to stop running ROS nodes first so the check is reliable |
| `innate update check`          | Check for available updates                                                                                             |
| `innate update apply [target]` | Apply updates (optionally pin a specific version)                                                                       |
| `innate update status`         | Show version + service info, and warn if installed services drift from the checkout                                     |
| `innate update reinstall`      | Re-run the post-update setup (systemd units, sudoers, dependencies, rebuild) without changing version                   |

### Apply options

| Option               | What it does                                                                                              |
| -------------------- | --------------------------------------------------------------------------------------------------------- |
| `--yes`, `-y`        | Skip confirmation prompts                                                                                 |
| `--background`, `-b` | Run the update in a background tmux session (`innate_update`); attach with `tmux attach -t innate_update` |

### Dev mode and branch targets

Pass `--dev` **before** the subcommand to opt into pre-release tags and branch targets. With it, `apply` can take a tag, a branch name, or the latest commit on a branch:

```bash theme={null}
innate update --dev check             # list newer tags, including pre-releases
innate update --dev apply 0.6.0-rc1   # a specific pre-release tag
innate update --dev apply main        # latest commit on main
innate update --dev apply my-feature  # latest commit on any branch
```

<Note>
  See [Updates and Maintenance](/robots/mars/updates-and-maintenance) for details.
</Note>

***

## Quick reference card

```
innate                          → status dashboard
innate service start            → launch ROS nodes
innate service stop             → kill all nodes
innate service restart          → stop + start
innate service view             → attach to tmux
innate view                     → shortcut for above
innate restart                  → shortcut for above
innate build [pkg ...]          → build (stops/starts nodes if running)
innate build release [pkg ...]  → optimized release build
innate clean                    → rm build/install/log
innate skill list               → list the robot's skills
innate skill type <id> [--json] → show a skill's input contract
innate skill run <id> [@k=v]    → run a skill by ID
innate volume [0-100]           → show or set speaker volume
innate diag                     → hardware diagnostics
innate update check [--dev]     → check for updates
innate update apply [target] [--dev] → apply updates (tag or branch with --dev)
innate update status            → version + service info
innate update reinstall         → re-run post-update setup
in8 ...                         → alias for innate
```

***

## Tmux navigation

When you run `innate view`, you're inside a tmux session. Here's how to move around:

| Keys                    | Action                                       |
| ----------------------- | -------------------------------------------- |
| `Ctrl+B` then `0`–`6`   | Switch to window 0–6                         |
| `Ctrl+B` then `←` / `→` | Switch between left/right panes              |
| `Ctrl+B` then `[`       | Enter scroll mode (navigate with arrow keys) |
| `q`                     | Exit scroll mode                             |
| `Ctrl+B` then `D`       | Detach from tmux (nodes keep running)        |

See [Advanced Development](/software/advanced-development#reading-the-tmux-windows) for a breakdown of what runs in each window.
