<!-- Source: https://docs.squirro.com/en/latest/technical/cli/index.html -->
# Squirro CLI

Squirro CLI manages a Squirro instance from a configuration directory that you keep in version control. It pulls the configuration of an instance into JSON files, applies your local edits back to the instance, and provides direct access to the Squirro APIs, search, chat, and instance logs.

Because that configuration lives in files rather than only inside the instance, you can review a change in a pull request, promote it from one environment to the next, and rebuild the same setup on a new instance.

Installing Squirro CLI places a `squirro` command on your system path, so everything described here is something you run from a terminal. Start with the built-in help, which lists the command groups available on your build.

```bash
squirro --help
```

The command runs the tool inside a Docker container for you. For more information, see the [Installation](installation.md#squirro-cli-installation) page.

> **Note**
>
> Squirro CLI is distributed through the Squirro Registry, and access is granted to selected customers and partners. For more information, see the [Installation](installation.md#squirro-cli-installation) page.

## What Squirro CLI Manages

Server-level configuration, shared by every project on the instance:

- Server configuration service settings, groups, and users.
- Local data loader plugins, GenAI plugins, Studio plugins, and legacy custom widgets.
- Project templates.

Project-level configuration, held separately for each project the configuration directory manages:

- Project metadata, members, project configuration service settings, support contacts, and theme.
- Labels and facets, data sources, and pipeline workflows.
- Agents and dashboards.
- Graphite schemes, concepts, and templates, for projects that use a knowledge graph.

For the authoritative list on the build you have installed, run the `squirro config list` command. It prints each supported type with the path it maps to.

```text
Supported Configuration Types:
────────────────────────────────────────────────────────────
Type                 File Path
────────────────────────────────────────────────────────────
AgentsConfig         projects/{ProjectsConfig}/agents/*.json
DashboardsConfig     projects/{ProjectsConfig}/dashboards/*.json
GroupsConfig         genai/groups.json
LabelsConfig         projects/{ProjectsConfig}/connectors/labels.json
ProjectInfo          projects/{ProjectsConfig}/platform/info.json
ServerConfigConfig   genai/config-server.json
SourcesConfig        projects/{ProjectsConfig}/connectors/sources/*.json
WorkflowsConfig      projects/{ProjectsConfig}/enrichments/workflows.json
```

That sample is shortened. The full output lists every supported type and adds a description for each. The `{ProjectsConfig}` segment stands for the name of a project directory under `projects/`.

## Requirements

- A Squirro instance running version 3.16.4 or later. Against an older instance, commands still run, but a warning reports that some of them may not work as expected.
- Docker, and a Squirro Registry account. For more information, see the [Installation](installation.md#squirro-cli-installation) page.

## Designed for AI Assistants

Running the commands by hand works, and the [Main Commands](commands.md#squirro-cli-commands) page documents them so that you can follow along, check a result, or investigate a failure.

Squirro CLI is nonetheless built to be operated by an AI coding assistant rather than typed command by command. You describe the outcome you want in natural language, and the assistant chooses the commands, reads the configuration schema, edits the JSON files, and previews the change before applying it.

Three parts of the tool exist to make that work:

- **A machine-readable schema**

  `squirro config schema` emits JSON schema for any configuration file, so an assistant can check field names and valid values instead of guessing them.
- **Assistant assets in the configuration directory**

  `squirro init` writes a `CLAUDE.md` file and a `.claude/` directory holding skills and tool definitions, which an assistant picks up automatically when it starts in that directory.
- **A preview before every change**

  `squirro config apply` shows the difference it intends to make and asks for confirmation, so a wrong instruction is caught before it reaches the instance.

Claude Code is the assistant Squirro recommends and supports. The assets that `squirro init` writes are specific to it, so another assistant with command line access can run the commands but starts without that context, and you have to supply the equivalent yourself.

## Where to Start

1. **Install the tool**

   Squirro Registry access, Docker, the `squirro` wrapper script, and how to move to a newer build. [Learn more](installation.md#squirro-cli-installation)
2. **Create a configuration directory**

   What `squirro init` creates, which configuration lives where, and which files are safe to commit. [Learn more](configuration-directory.md#squirro-cli-configuration-directory)
3. **Work with the commands**

   The command groups, the configuration pull and apply cycle, and API, search, chat, and log access. [Learn more](commands.md#squirro-cli-commands)
4. **Promote configuration between environments**

   How mirror profiles keep one set of tracked files and replicate it to a second and third instance. [Learn more](mirror-profiles.md#squirro-cli-mirror-profiles)

The [Prompt Library](prompt-library.md#squirro-cli-prompt-library) page sits alongside those steps rather than after them. It collects prompts for common delivery tasks, grouped by the part of the platform they configure, and is worth keeping to hand throughout.

## Related Tools

Four other command line tools relate to Squirro CLI, each in a different way:

- **Squirro Toolbox**

  Utilities you install locally, covering several tasks Squirro CLI does not: exporting the content of a project, loading data from sources other than a local file, and deploying pipelets and Known Entity Extraction. Squirro CLI manages a whole configuration as tracked files, so the two are complementary rather than alternatives. For more information, see the [Squirro Toolbox](../api/toolbox/index.md#api-sdk-toolbox) page.
- **Neo extensions CLI**

  Scaffolds, builds, and deploys a custom user interface bundle. Squirro CLI bundles this one, so it needs no separate installation: `squirro ui` runs it with the credentials of the active profile, and `squirro init` copies its assistant skills in alongside its own. For more information, see the [CLI Reference](../neo/dev-guide/cli-reference.md#neo-extensions-cli-reference) page.
- **GenAI agent configuration CLI**

  Authors, validates, and deploys Project Neo agent configuration. It is a separate installation, distributed as the `squirro-genai` Python package, which provides a `genai` command, and it is in Technical Preview. Do not confuse it with GenAI Platform, which is what a connection profile targets. For more information, see the [Agent Configuration](../neo/admin-guide/agent-config/index.md#neo-agent-config) page.
- **Squirro Python SDK**

  The Python client library, for writing your own integrations against the Squirro APIs. For more information, see the [SquirroClient (Python SDK)](../api/squirro_client/index.md#squirro-client) page.

> **Note**
>
> Squirro CLI runs inside a container that sees only `~/.squirro` and the directory you run it from, so it cannot reach a tool installed on your own machine. Run the Squirro Toolbox and the `genai` commands directly rather than through `squirro`, and give them paths of their own. The Neo extensions CLI and the Python SDK are the exception, because both ship inside the image and Squirro CLI drives them for you.

## Support

For questions, issues, or enhancements, visit the [Squirro Support website](https://go.squirro.com/support) and submit a technical support request.
