Documentation

Cybersecurity SuperIntelligence

CSI is a multi-backend cybersecurity CLI — both a harness and a scaffold. One command, one local routing proxy, and your choice of agentic scaffold — Alias cc, Claude Code, OpenAI Codex, Alias CAI, Mistral Vibe or GCAI — all reaching specialized security models while telemetry is filtered and cost is logged.

csi — live session DEMO · 4×

Install in one line

Two dependencies (curl and docker), one installer, then launch:

curl -Ls aliasrobotics.com/get_csi | sh
csi

By default csi launches cc, CSI’s security-focused scaffold. Switch the engine at any time with the CSI_BACKEND environment variable — see Choosing a scaffold.

Start here

Scaffold and harness

Two terms recur throughout these docs:

  • Scaffold — the agent’s reasoning and orchestration architecture: its planning loop, tool-use protocol and context management.
  • Harness — the environment that runs and constrains that architecture: process isolation, model routing, telemetry control and unified logging.

CSI is both. It is a harness — the local routing proxy, container and telemetry defense that every session runs inside — and a scaffold in its own right: a meta-scaffold that combines several specialized agentic scaffolds under one csi wrapper and can orchestrate them together (e.g. Blackboard mode). The proxy on 127.0.0.1 translates each scaffold’s wire format, blocks non-essential telemetry, and appends every request to a single JSONL cost ledger. Each backend below is itself a specialized agentic implementation.

📚 Research: the harness-vs-scaffold question is studied in Towards Cybersecurity SuperIntelligence (CSI): What’s the best harness for cybersecurity? (arXiv:2605.28334). Browse all 25+ open publications →.
BackendScaffoldOriginal documentation
cc (default)cc — CSI security scaffoldcc one-pager →
claudeClaude Code — Anthropiccode.claude.com/docs
codexOpenAI Codexdevelopers.openai.com/codex
caiAlias Robotics CAIgithub.com/aliasrobotics/CAI
mistralMistral Vibedocs.mistral.ai/mistral-vibe
gcaiAlias Robotics GCAIGCAI one-pager →
Want the bigger picture — architecture and the “the system is the agent” thesis? See the Scaffolds product page and CSI overview.

Support

Having trouble or need assistance? Our team is ready to help.

support@aliasrobotics.com
Get started

Installation

Install CSI with a single command, paste your Alias API key when prompted, and you’re ready to run. Linking a CAI .env is optional.

Prerequisites

Before installing CSI, make sure the following tools are available on your system:

DependencyPurposeVerify
curlDownloads the CSI installercurl --version
dockerRuns CSI containersdocker --version
If either tool is missing, install it via your system package manager (apt, brew, etc.) or its official website before continuing.

Run the installer

Run the following command in your terminal. The installer will download and configure CSI automatically:

curl -Ls aliasrobotics.com/get_csi | sh

API key setup

During installation you will be prompted to enter your Alias API key. This key was sent to your registered email address. Copy it from your inbox and paste it when asked.

If you have not received your API key, check your spam folder or contact us at support@aliasrobotics.com.

CAI environment (.env) — optional

If you use the CAI scaffold (CSI_BACKEND=cai csi), CAI loads a project .env from the working directory inside the container. CSI maps that to ~/.csi/workspace/.env on your host (mounted as /workspace).

After the API key step, the installer asks for an optional path to a local CAI git clone. If the repo has a .env at its root, the installer links it:

~/.csi/workspace/.env  →  /path/to/your/cai/.env

Press Enter to skip — the installer creates a minimal default ~/.csi/workspace/.env instead (includes your ALIAS_API_KEY and CAI_COMPACT_REPL=0).

Model selection: CAI_MODEL is set by the CSI launcher from ANTHROPIC_MODEL (Docker -e or csi --model), not from your repo .env. Other CAI_* variables in the linked file (e.g. CAI_STREAM, PROMPT_TOOLKIT_NO_CPR) are loaded when CAI starts. Restart csi after editing the file on the host.

To reconfigure later without a full reinstall:

~/.csi/setup-cai-env.sh --configure          # interactive prompt
~/.csi/setup-cai-env.sh --link ~/path/to/cai  # link repo .env directly

Closing the Docker container does not modify your linked .env. Session-only changes made with /env set inside CAI are not written back to disk.

Step-by-step summary

  • 1
    Open a terminal
    Any standard terminal on Linux or macOS.
  • 2
    Run the installer
    curl -Ls aliasrobotics.com/get_csi | sh
  • 3
    Enter your API key
    Paste the key from your email when the installer prompts you.
  • 4
    Link CAI repo .env (optional)
    Enter the path to your CAI clone, or press Enter for the default ~/.csi/workspace/.env.
  • 5
    Installation complete
    CSI is installed and ready to use.

First run

To launch CSI, open a terminal and run:

csi

CSI will start and guide you from there. No additional arguments are required to get started.

By default, csi launches cc, CSI’s security-focused scaffold. To pick a different engine see Choosing a scaffold. Optional flags such as --mount and --network host are documented under Launcher flags & env. csi --update refreshes the Docker image and, if your CAI .env is not linked to a repo, may prompt you to link it — it does not update the host launcher script; re-run curl -Ls aliasrobotics.com/get_csi | sh for that.

Support

Having trouble or need assistance? Our team is ready to help.

support@aliasrobotics.com
Get started

Architecture

One csi wrapper, any scaffold, a single local routing proxy. The proxy is CSI’s harness layer — the environment that runs, evaluates and constrains whichever scaffold you launch: it translates each scaffold’s wire format, filters telemetry, and logs every request to one cost ledger.

Scaffold routing

Whichever scaffold you launch, its API traffic is pointed at the proxy on 127.0.0.1. A single model identifier — an alias* model, an OpenRouter slug, an Anthropic model, or a custom endpoint — reaches the right upstream regardless of which scaffold dispatched it.

csi wrapper CSI_BACKEND ∈ {cc, claude, codex, cai, gcai, mistral}
CSI::ClaudeClaude Code
CSI::CodexRust CLI
CSI::GCAIgenerative
CSI::CAIcai-framework
CSI::MistralVibe CLI
Local routing proxy 127.0.0.1:PORT
wire translation (Anthropic ↔ OpenAI) · /model switching · quota preflight · telemetry whitelist · JSONL logging + cost ledger
alias* — Alias API
openrouter/*
claude-* — Anthropic
custom — self-hosted

All upstreams speak Chat Completions; the proxy translates to each backend’s wire format (Anthropic /v1/messages for Claude Code, the Responses API for Codex). Every request is appended to ~/.csi/logs/csi_<uuid>.jsonl with route, model, status, tokens, cost and timing.

🔒 Telemetry defense

Telemetry control is a property of the harness, so it applies to every scaffold, not a single backend. By default (CSI_TELEMETRY_FILTER=1) CSI keeps non-essential traffic off the wire through up to three independent layers. The proxy whitelist (Layer 3) is universal — it governs all backends; scaffolds running on a JavaScript runtime gain two additional layers at the environment and network level.

Layer 1 · JS scaffolds
Environment

Sets telemetry-disabling environment variables (e.g. DISABLE_TELEMETRY=1) in settings.json before the scaffold starts.

Layer 2 · JS scaffolds
Network filter

A loader patches fetch()/https.request()/DNS to block analytics and telemetry hosts (Segment, Datadog, GrowthBook, vendor endpoints). OAuth/login paths stay exempt.

Layer 3 · every backend
Proxy whitelist

Only API paths (/v1/messages, /v1/complete, /v1/responses, /oauth) are forwarded; WebSocket upgrades and metrics paths are rejected.

Runtimes without a hook layer (e.g. the Rust-based Codex scaffold) are still covered by the universal proxy whitelist. Subscriptions that need feature flags or org metrics can opt out with --no-telemetry-filter at install or CSI_TELEMETRY_FILTER=0 — see Environment variables. DISABLE_AUTOUPDATER=1 stays on regardless.
Full csi wrapper & proxy diagram
                         csi  (wrapper)
       CSI_BACKEND = cc | claude | codex | cai | gcai | mistral
                               |
   +-----------+-----------+---+-------+-----------+-----------+
 CSI::Claude  CSI::Codex  CSI::CAI  CSI::GCAI  CSI::Mistral
 (cc/claude)  (Rust)      (Python)  (in-tree)  (vibe)
     |            |           |          |           |
 ANTHROPIC    OPENAI      ALIAS      (proxy)     (proxy)
 _BASE_URL    _BASE_URL   _BASE_URL
     +------------+-----------+----------+-----------+
                              v
  +============================================================+
  |  L3  Local routing proxy        127.0.0.1:PORT             |
  |      - wire translation   Anthropic  <->  OpenAI           |
  |      - /model switching   +  quota preflight check         |
  |      - telemetry whitelist (non-API paths blocked)         |
  |      - JSONL logging      +  cost ledger per request       |
  +====+================+================+=====================+
       v                v                v
   alias*           openrouter/*     claude-* / custom
   Alias API        OpenRouter       Anthropic / self-hosted
   (:666)           (OR_API_KEY)     (OAuth / key)

Agent view (csi agents)

CSI’s multi-scaffold equivalent of claude agents: one TUI to dispatch, monitor, attach to, reply to and stop background sessions across every scaffold — each job routed through the shared proxy so a single model identifier reaches the right upstream from whichever scaffold dispatched it.

# open the cross-scaffold roster
csi agents

# one-shot dispatch (fire and forget)
csi agents "investigate the flaky settings test"
CSI_BACKEND=codex csi agents "summarise this branch"
  • Cross-scaffold roster with live state (working / done / blocked / failed).
  • Real-terminal attach via tmux — the scaffold’s own UI, no transcript replay.
  • Reply straight into a live REPL; Ctrl-C double-tap detaches without killing the session.
  • One persistent proxy per user; a guard child stops it after 60 s idle.
csi agents — cross-scaffold orchestration
   csi agents   (Ink TUI - cross-scaffold roster)
     > * [cc]    fix auth bug        1m
       * [gcai]  audit scan          4m
                 |  dispatch{ scaffold, model, prompt }
                 v
       adapter.dispatch()  -> tmux pane per scaffold
        cc . claude . codex . cai . gcai . vibe
                 |  ANTHROPIC_BASE_URL = 127.0.0.1:
                 v
       shared proxy (detached) + guard child
        - one API JSONL    - idle 60s -> SIGTERM
        - polls roster.json  - 12h hard ceiling
The full architecture, source layout and the “the system is the agent” thesis live on the Scaffolds product page.
📚 Research: the harness-and-scaffold design is studied in Towards Cybersecurity SuperIntelligence (CSI): What’s the best harness for cybersecurity? (arXiv:2605.28334). See research & security →.
Get started

LLMs & sovereignty

CSI runs on the alias family of cybersecurity-specialized models — European-built, sovereign by design, and deployable on-prem or fully air-gapped. The harness keeps your data on your infrastructure.

The alias model family

Alias Robotics trains a family of cybersecurity-specialized LLMs. Any of them is reachable through CSI with --model (or the ANTHROPIC_MODEL default), routed by the proxy — see Model routing.

ModelRole
alias3Largest, highest-capability model.
alias2Flagship production model.
alias2-miniFast, cost-efficient workhorse — the default for background agents.
alias1Lightweight model; works out of the box on a fresh install.
alias0Smallest, most embeddable model.
csi --model alias3 --yolo
csi --model alias2-mini
Full specifications and release tracks live on the LLMs product page.

🔒 Sovereign by design

CSI is built so sensitive security work never has to leave your perimeter:

  • On-prem & air-gapped — run the suite and alias models cloud-deployed or fully air-gapped, with no dependency on a third-party cloud.
  • No data leakage — the harness routes every request through a local proxy and filters non-essential telemetry by default (see Architecture).
  • European-built — trained and operated under European data-sovereignty principles.
  • Compliance-ready — designed for GDPR and NIS2 obligations.
Want to run entirely on your own hardware? You can also point CSI at a model you host yourself — see custom & local endpoints. Explore the models on the LLMs page.
Scaffolds

Choosing a scaffold

A scaffold is the agent’s reasoning and orchestration architecture — its planning loop, tool-use and context management. Each CSI backend is a distinct, specialized agentic implementation. CSI (the harness) keeps the launch command identical; you only change which scaffold sits behind it via the CSI_BACKEND environment variable.

Default scaffold

When you run csi, it starts using cc — CSI’s security-focused scaffold — out of the box. No extra configuration needed.

csi

Selecting a different scaffold

Set the CSI_BACKEND environment variable before launching CSI. It is read at startup and determines which AI engine powers the session.

CSI_BACKEND=<scaffold> csi

Available backends

BackendScaffoldCommandOne-pager
cccc — CSI security scaffold (default)csicc →
claudeClaude CodeCSI_BACKEND=claude csiClaude Code →
codexOpenAI CodexCSI_BACKEND=codex csiOpenAI Codex →
caiAlias Robotics CAICSI_BACKEND=cai csiAlias CAI →
mistralMistral VibeCSI_BACKEND=mistral csiMistral Vibe →
gcaiAlias Robotics GCAICSI_BACKEND=gcai csiGCAI →

cc is the default scaffold — a security-focused coding agent re-implemented for autonomous cybersecurity work. claude runs Anthropic’s Claude Code. See the cc and Claude Code one-pagers.

Which one should I use?

Two questions come up constantly — “is CSI a step down from CAI?” and “do I prompt CSI differently?” The short answers:

  • CSI is not a competitor to CAI — it is a meta-scaffold that contains it. CSI is the harness/orchestrator; CAI is one of the scaffolds it can run. Choosing CSI does not mean leaving CAI behind — CSI_BACKEND=cai csi runs the exact same CAI engine, now routed through the CSI proxy.
  • Prompting is the same. There is no CSI-specific prompt syntax — you talk to whichever scaffold is behind the wrapper exactly as you would natively. If a session feels weaker, it is almost always the scaffold (and its model), not the prompt. Our prompt guide applies to every backend.
  • Use cc as your default. Across our benchmarking, cc and claude are the strongest autonomous-security performers; CAI is fully supported but is one of the lower performers. So if a plain csi session feels more capable than your old CAI runs, that is expected — it is the default cc scaffold doing the work.
  • For best results, use them all. CSI’s real advantage is orchestrating several agents at once — mixing scaffolds and models, and having them inspect and correct each other’s work. See Multi-agent.
Export the variable to avoid repeating it every session:

export CSI_BACKEND=cai
csi
If CSI_BACKEND is not set, CSI always falls back to Claude Code as the default.
Scaffold one-pager

Claude Code

Anthropic’s agentic coding CLI, available as a CSI scaffold. CSI integrates it and routes its API traffic through the local proxy so any model identifier reaches the right upstream.

Claude Code Anthropic agent

Claude Code is Anthropic’s terminal-native agent — it reads your files, runs tools, and edits code through an interactive TUI. It is a product of Anthropic; CSI integrates it as a scaffold (the claude backend, pinned for reproducibility) and routes it through the harness. You bring your own Claude Code access.

CSI_BACKENDclaude
LaunchCSI_BACKEND=claude csi
Pinned versionv2.1.87

Launch via CSI

Select Claude Code with CSI_BACKEND (the default scaffold is cc):

CSI_BACKEND=claude csi
CSI_BACKEND=claude csi --model alias1     # pick a model
CSI_BACKEND=claude csi --network host     # share the host network stack

Continue mode

A CSI convenience: auto-send “continue” when the model stops with end_turn and no tool use, prompting it to keep working.

  • Shift+Tab — cycle to ⏩ continue mode on (yellow indicator).
  • EnvironmentCSI_CONTINUE=1 (persists the whole session); cap iterations with CSI_CONTINUE_MAX.
Extending Claude Code: slash commands, sub-agents, hooks, settings and MCP are Claude Code features documented by Anthropic — see the official Claude Code docs. For CSI-specific MCP wiring see MCP integration; for every CSI variable see Environment variables.
Claude Code and Claude are products and trademarks of Anthropic. CSI integrates Claude Code as a scaffold and does not redistribute Anthropic’s software — you supply your own access and use it under Anthropic’s terms. For Alias Robotics’ own agent, see cc.
Scaffold one-pager

cc

cc is CSI’s default scaffold — a security-focused coding agent re-implemented by Alias Robotics, inspired by the Claude Code scaffold and tuned for long, autonomous cybersecurity work.

cc Default scaffold

cc is a clean re-implementation inspired by the Claude Code scaffold, reworked for security operations: its own agent loop, tool-use, TUI and memory management. It runs through the CSI harness like every other scaffold — unified routing, telemetry control, JSONL logging and cost tracking.

CSI_BACKENDcc  (default)
Launchcsi
Inspired byClaude Code
cc is the scaffold behind a plain csi. It is engineered for autonomous, tool-heavy security sessions where general-purpose coding agents tend to run out of context or memory.

Launch via CSI

csi                          # cc is the default
CSI_BACKEND=cc csi           # the same, explicit
csi --yolo                   # auto-approve tools (long autonomous runs)
csi --model alias3 --yolo

Built for autonomous security work

Security investigations — port scans, fuzzing campaigns, multi-host triage — generate enormous tool-use traffic, and the number of messages climbs far faster than the token count. cc is built around that reality with a multi-level memory-management system so long sessions keep going where general-purpose agents stall:

  • Bounded working set — the hot path avoids unbounded state growth, keeping memory flat across thousands of tool calls.
  • Proactive summarization — the conversation is compacted by message count, well before any token limit, preserving investigation context.
  • Safety valve — a cheap local fallback keeps the most recent context if a session spikes, instead of crashing.
  • Session-memory continuity — transcript and continuity excerpts persist to disk so the agent recovers context after a compaction.

What else cc brings

  • Tuned for autonomous --yolo operation, the mode most security workflows run in.
  • Agent teams and skill loading for multi-agent investigations.
  • Drives CSI dynamic workflows as the default fan-out scaffold.
  • Routes any model through the CSI proxy, including the 1M-context endpoints for large-context models.
Like every CSI scaffold, cc inherits the harness: telemetry control (see Architecture), unified logging, and MCP integration. For Anthropic’s Claude Code, see the Claude Code page.
Scaffold one-pager

OpenAI Codex

OpenAI’s Rust-based coding agent, routed through CSI. This page is a summary; the full reference is the official Codex documentation.

OpenAI Codex Rust CLI

Codex is OpenAI’s terminal coding agent. It speaks the Responses API; CSI’s proxy bridges that wire format to Chat Completions so the same Alias, OpenAI or Anthropic model identifiers work from inside Codex.

CSI_BACKENDcodex
LaunchCSI_BACKEND=codex csi
Wire/responses

Launch via CSI

CSI_BACKEND=codex csi
CSI_BACKEND=codex csi --model alias1 "summarise this branch"

What CSI adds

  • Responses API ↔ Chat Completions translation in the local proxy — no code changes to Codex.
  • Auth handled for you: OPENAI_API_KEY is derived from your Alias API key.
  • Single shared JSONL log and cost ledger alongside every other scaffold.
  • Quota preflight handling so model switching is seamless.
Codex is Rust (no hook layer), so the JavaScript telemetry filter used for Claude Code does not apply — the proxy whitelist still governs what leaves your machine. Command-line flags, slash commands, config and MCP are documented at developers.openai.com/codex.
Scaffold one-pager

Alias CAI

Alias Robotics’ open-source Cybersecurity AI framework — a bug-bounty-ready agent toolkit with its own agent loop, TUI and tool-use system. This page is a summary; see the CAI repository and paper for the full reference.

CAI Cybersecurity AI

CAI (Cybersecurity AI) is the foundational open-source framework that started it all — used by 100,000+ hackers, supporting 300+ LLMs with built-in security tools. CSI installs it from the Alias private PyPI and starts the proxy for unified logging and cost tracking.

CSI_BACKENDcai
LaunchCSI_BACKEND=cai csi
RuntimePython

Launch via CSI

CSI_BACKEND=cai csi
CSI_BACKEND=cai csi --yolo            # auto-approve tool runs
CSI_BACKEND=cai csi --unrestricted    # steering (abliteration)

CAI has its own agent loop, TUI and tool-use system. CSI starts the local routing proxy for unified JSONL logging and cost tracking, and passes the Alias API key via ALIAS_API_KEY.

What you get

  • Agent + Runner SDK — from cai.sdk.agents import Agent, Runner.
  • 300+ LLMs supported: alias models, Claude, GPT, Gemini, Mistral and local endpoints.
  • Interactive /mcp slash commands — the recommended path for MCP workflows.
  • Open source — the #1 AI agent for CTFs.
Using MCP servers (Burp, Chrome)? CAI’s interactive /mcp load / /mcp add commands make session management trivial — see MCP integration. The optional CAI .env is covered in Installation.
📚 Research: Cybersecurity AI (CAI) (arXiv:2504.06017) and CAI Fluency (arXiv:2508.13588). More on research & security →.
Scaffold one-pager

Mistral Vibe

Mistral AI’s open-source CLI coding agent, built for the Devstral model family and routed through CSI. This page is a summary; the official Mistral docs are the full reference.

Mistral Vibe Open source

Vibe is Mistral’s conversational CLI coding agent (Apache 2.0), with tools for file manipulation, code search, version control and shell execution. CSI routes it through the proxy so a single model identifier reaches the right upstream.

CSI_BACKENDmistral
LaunchCSI_BACKEND=mistral csi
RuntimePython 3.12+

Launch via CSI

CSI_BACKEND=mistral csi
CSI_BACKEND=mistral csi --model alias1 "draft a CHANGELOG"

What you get

  • Interactive chat agent with read / write / edit, stateful bash, and ripgrep-backed grep.
  • Project-aware context — Vibe scans your file structure and Git status automatically.
  • Agent profiles (default, accept-edits, auto-approve, plan) selectable with --agent.
  • Programmatic mode (--prompt, --output text|json) for scripting.
Custom agents, subagents, skills and ACP / IDE integration are documented upstream at docs.mistral.ai/mistral-vibe.
Scaffold one-pager

GCAI

Generative Cybersecurity AI — Alias Robotics’ minimalistic, one-shot generative scaffold. A standalone TypeScript agent, iteratively generated and refined by an autoresearch meta-harness, that compiles to a tiny auditable .mjs.

GCAI Generative · in-tree

GCAI is purpose-built for deep-embedded, high-scrutiny, deterministic environments where every line must be auditable — roughly 1,344 LOC of TypeScript, hundreds of times smaller than its peers. Rather than being configured by the user, it is rapidly retargeted per cybersecurity vertical via an autoresearch loop that modifies, compiles, scores and accepts or rejects each candidate scaffold.

CSI_BACKENDgcai
LaunchCSI_BACKEND=gcai csi
Size~1,344 LOC TS
GCAI has no third-party documentation to point to — it is an in-tree Alias Robotics scaffold. This one-pager is its reference; the optimization harness lives inside CSI (csi gcai).

Launch via CSI

Run a compiled GCAI scaffold like any other backend:

CSI_BACKEND=gcai csi
CSI_BACKEND=gcai csi --model alias3

The optimization loop

GCAI follows an autoresearch-style loop — the AI agent is the researcher, driving the loop via tool use. One targeted change per iteration, scored by real CTF solve rate (no LLM-as-judge):

  • Modify — the agent generates a TypeScript candidate scaffold (one targeted change).
  • Compileesbuild scaffold_candidate.tsscaffold_candidate.mjs (~35 KB).
  • Evaluate — score the candidate on real CTF challenges; the metric is the solve rate.
  • Decide — accept if the solve rate improves, otherwise discard; snapshot every iteration.
  • Loop — autonomous until convergence, max iterations, or manual stop (--resume to continue).
CSI_BACKEND=cc csi gcai --model opus --target-model alias3 \
    --challenges cybench --max-iters 50 --remote agents
The same loop runs inside a session as the /gcai skill — one iteration per invocation, driven by /loop. Interested in GCAI for an OT, robotics, embedded or air-gapped vertical? Co-design it with us →.
Configure

MCP integration

Bridge external Model Context Protocol servers — Burp Suite and Chrome DevTools — into a CSI session for hands-on web and network testing.

Recommended scaffold for MCP: use CSI_BACKEND=cai (Alias CAI). Its interactive /mcp slash commands make session management trivial. Other scaffolds (cc, claude, codex, vibe) support MCP through static config files instead.

Host setup (one time only)

These steps are performed once on your host machine before using MCP integrations with CSI.

1. Install dependencies

sudo apt install -y default-jre-headless
curl -LsSf https://astral.sh/uv/install.sh | sh
mkdir -p ~/.csi/burp
PackagePurpose
default-jre-headlessJava runtime required to run the Burp MCP proxy JAR
uv (via installer)Python package runner used to launch mcp-proxy
~/.csi/burp/Directory where the Burp proxy JAR will be stored

2. Configure Burp Suite MCP server

  • 1
    Install the extension
    In Burp Suite, go to Extender → BApp Store, search for “MCP Server”, click Install, then Enable.
  • 2
    Set host and port
    Leave the defaults: host 127.0.0.1, port 9876.
  • 3
    Extract the proxy JAR
    Click Extract server proxy jar (bottom corner of the MCP tab) and save it as ~/.csi/burp/mcp-proxy.jar.
The JAR extraction button only appears inside the Burp MCP extension tab, not in the main Burp window. Make sure the extension is enabled first.

Each session: 3 terminals + inside CAI

Make sure $ALIAS_API_KEY is set in your environment before launching Terminal 3, or replace it inline with your actual key.

Every working session needs three host terminals (Burp bridge, Chrome bridge, CSI) plus the /mcp load commands inside CAI. This workflow uses host.docker.internal from inside the container, which works in every launch mode (bridge or --network host) — the launcher always wires the necessary --add-host.

Terminal 1: Burp bridge
uvx mcp-proxy --host 0.0.0.0 --port 9878 -- \
    java -jar $HOME/.csi/burp/mcp-proxy.jar \
    --sse-url http://127.0.0.1:9876
Terminal 2: Chrome DevTools bridge
uvx mcp-proxy --host 0.0.0.0 --port 9877 -- \
    npx -y chrome-devtools-mcp@latest
Terminal 3: CSI container
CSI_BACKEND=cai csi --model alias1 --yolo
Security note for csi --network host users: the container’s loopback is the host’s, so you may optionally bind both bridges to --host 127.0.0.1 and switch the /mcp load URLs (below) to http://127.0.0.1:<port>/sse. Functionally equivalent, but avoids exposing the bridges on your LAN.

Inside CAI

Once the CSI container is running, load the MCP servers and attach them to the agent:

CAI> /mcp load http://host.docker.internal:9878/sse burp
CAI> /mcp load http://host.docker.internal:9877/sse chrome
CAI> /mcp list
CAI> /mcp add burp redteam_agent
CAI> /mcp add chrome redteam_agent

Smoke test

Verify that the MCP integration is working end-to-end:

CAI> /agent redteam_agent
CAI> Use the chrome MCP to fetch https://example.com and report the page title.
If the agent successfully returns the page title of example.com, your MCP setup is working correctly.

Support

Having trouble or need assistance? Our team is ready to help.

support@aliasrobotics.com
Configure

Launcher flags

The host launcher accepts a couple of optional, opt-in flags forwarded to Docker — mount extra folders and share the host network — plus a helper for the CAI .env. For variables, see Environment variables.

Optional launcher flags

The host launcher (installed by curl -Ls aliasrobotics.com/get_csi | sh) accepts two optional flags that are parsed before the regular CSI arguments and forwarded to Docker. They are opt-in — leave them out for the default behavior.

csi --update refreshes the Docker image and may prompt to link a CAI repo .env if one is not configured. To update the host launcher itself (e.g. to pick up new flags), re-run curl -Ls aliasrobotics.com/get_csi | sh.

CAI .env helper (~/.csi/setup-cai-env.sh)

Created during installation. Useful commands:

CommandEffect
~/.csi/setup-cai-env.sh --configureInteractive prompt — link a CAI repo or create the default .env.
~/.csi/setup-cai-env.sh --link ~/path/to/caiLink ~/.csi/workspace/.env to ~/path/to/cai/.env.
~/.csi/setup-cai-env.sh --write-defaultReplace with the minimal default .env (non-interactive).

Verify inside the container: cat /workspace/.env (should match your repo file when linked). Inside CAI: /env lists CAI_* variables present in the process.

--mount host:container[:ro] — expose host folders

By default, CSI only sees ~/.csi/workspace inside the container. To expose additional paths from your computer, use --mount with the usual Docker bind-mount syntax. The flag can be repeated.

csi --mount ~/Documents/GITLAB:/gitlab
csi --mount ~/projects:/projects --mount ~/data:/data:ro
ExampleEffect
csi --mount ~/GITLAB:/gitlabYour ~/GITLAB folder appears as /gitlab inside CSI.
csi --mount ./reports:/workspace/reportsMount the current directory’s reports subfolder read-write.
csi --mount ~/secrets:/secrets:roRead-only mount — the agent can read but not modify host files.
Tilde paths (~/…) are expanded on the host before the container starts. Only mount what you need — broader mounts give the agent more access to your filesystem.

--network host — share the host’s network stack

By default CSI runs on Docker’s bridge network — fine for most web and MCP workflows (the container reaches host-side services via host.docker.internal). For local-network reconnaissance that needs Layer-2 visibility (ARP scans, live PCAP on your LAN interface, etc.), pass --network host so the container shares the host’s network stack.

csi --network host
CSI_BACKEND=cai csi --network host --yolo
CSI_BACKEND=cai csi --network host --mount ~/Documents/GITLAB:/gitlab
ModeWhen to use
csi (default bridge)Normal usage, MCP (Burp/Chrome via host.docker.internal), remote targets.
csi --network hostScanning your local subnet, ARP/L2 discovery, capturing traffic on the host NIC. MCP bridges become reachable on 127.0.0.1 (see MCP integration).
Host networking reduces container isolation. Combine with --mount only on paths you actually need to expose to the agent.
Configure

Environment variables

A complete reference of the environment variables CSI reads. Most have sensible defaults — set them only when you need to override behaviour, point at a different model, or wire up a custom endpoint.

How to set them

Persist a variable in ~/.csi/config/settings.json (under env) at install time, export it in your shell for a single session, or inline it before the command:

# persisted in settings.json
csi install --api-key sk-xxx --env CLAUDE_CODE_MAX_OUTPUT_TOKENS=16000

# per-session
export CSI_BACKEND=cai
csi

# inline (one run)
CSI_BACKEND=codex CSI_CONTINUE=1 csi "summarise this branch"

Backend & models

CSI_BACKENDcc
Scaffold to launch: cc, claude, codex, cai, gcai or mistral.
ANTHROPIC_MODELalias1
Default model identifier (an alias* model or openrouter/<provider>/<model>). Overridden by --model.
CSI_CONTEXT_WINDOW0
Context-window budget (tokens) the proxy keeps input + output within. 0 = use the model default.

Custom & third-party endpoints

CSI_CUSTOM_ENDPOINT
Point at any OpenAI-compatible server (vLLM, TGI, Ollama, llama.cpp, a remote host). The proxy forwards the scaffold’s system prompt verbatim.
CSI_CUSTOM_API_KEY
Auth token for the custom endpoint, if it requires one.
CSI_CUSTOM_MODEL
Explicit model name to send to the custom endpoint (otherwise falls back to ANTHROPIC_MODEL).
OPENROUTER_API_KEY
API key enabling openrouter/<provider>/<model> routing.
MISTRAL_API_KEY
API key for the Mistral Vibe backend when using Mistral-hosted models directly.

Tuning (Claude Code)

CLAUDE_CODE_MAX_OUTPUT_TOKENS32000
Max tokens per response.
MAX_THINKING_TOKENS0
Extended thinking budget. 0 = disabled.
API_TIMEOUT_MS3000000
Request timeout in milliseconds.
CLAUDE_CODE_AUTO_COMPACT_WINDOW
Message-count window for proactive auto-compaction with proxy models on the Claude Code backend.

Rate-limit backoff (all scaffolds)

CSI_RETRY_MAX_ATTEMPTS14
Max transparent retries on a throttled (429) or overloaded (5xx) request. With the default base/cap this rides out ~5.5 min of cooldown — enough to cover the server-side rate-limit window. See Rate limits.
CSI_RETRY_BASE_MS2000
First backoff delay; doubles each attempt (2s, 4s, 8s, 16s…).
CSI_RETRY_CAP_MS30000
Ceiling for a single backoff wait once the exponential growth reaches it. An upstream Retry-After is honored independently (capped at 120s).

Continue mode

CSI_CONTINUE0
Auto-continue on end_turn without tool use (1 = on, persists the session).
CSI_CONTINUE_MAX-1
Max continue iterations per request (-1 = unlimited).

Steering

CSI_STEERING
Set 1 for persistent activation steering (abliteration) for the entire session — injects steering_enabled:true into Alias API requests only. Per-prompt steering is available via the /steering skill.

🔒 Telemetry & updates

CSI_TELEMETRY_FILTER1
Telemetry blocking (0 = allow, e.g. for Pro/Team feature flags). Applies to every scaffold — see Architecture.
DISABLE_AUTOUPDATER1
Prevent scaffold self-updates (stays on regardless of the telemetry filter).
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC1
Suppress non-essential Claude Code network traffic.

Agent view (csi agents)

CSI_AGENTS_DEFAULT_MODELalias2-mini
Default model for dispatched background sessions.
CSI_AGENTS_QUIET
Suppress the dispatch banner / verbose output.
CSI_AGENTS_DISABLE_SHARED_PROXY
Give each agent its own proxy instead of the shared one.
CSI_AGENTS_TUI_ATTACH
Control tmux attach behaviour from the agent-view TUI.

🔑 Auth (set by the wrapper)

These are normally managed for you by the csi launcher — documented for transparency and advanced overrides.

ALIAS_API_KEY
Your Alias API key — powers alias* models and the CAI backend.
ANTHROPIC_BASE_URL
Set to the local proxy (http://127.0.0.1:PORT) for Claude Code.
ANTHROPIC_API_KEY
Conditionally injected: the alias key until you /login with OAuth (macOS Keychain); on Linux always injected.
OPENAI_BASE_URL / OPENAI_API_KEY
Set to the proxy and derived from your alias key for the Codex backend.
CLAUDE_CODE_OAUTH_TOKEN
OAuth token stored in the OS credential store after /login.
CSI_FORCE_ANTHROPIC_AUTH
Set 1 to force Claude Code to honour OAuth-derived account info.

CAI backend

Loaded from your project .env when CAI starts (see Installation and Launcher flags).

CAI_MODEL
Set by the CSI launcher from ANTHROPIC_MODEL — not from your repo .env.
CAI_STREAM
Toggle streaming output in CAI.
CAI_COMPACT_REPL
Compact REPL mode (the default .env sets 0).
PROMPT_TOOLKIT_NO_CPR
Disable cursor-position requests for terminals that mishandle them.

Environment integration

CLAUDECODE
Set to an empty string (CLAUDECODE="") to bypass Claude Code’s nested-session detection when launching CSI from inside another agent.
CLAUDE_CONFIG_DIR
Override the Claude Code config directory.
VIBE_HOME
Mistral Vibe home directory (the wrapper sets a default; your value wins when set).
CSI_PYTHON
Explicit Python interpreter override (always wins over an active venv).
CSI_PRESERVE_THINKING
Set 1 to round-trip Anthropic thinking blocks through the OpenAI translation.
CSI_NO_TTY
Set 1 to force non-TTY mode (used by group / non-interactive runs).
NO_COLOR
Disable ANSI colour output.
CSI also reads a number of internal research and collaboration variables (BLACKBOARD_*, CSI_GCTR_*, CSI_COLLAB_*, …) used by multi-agent collaboration modes. They are not needed for normal usage.
Configure

Model routing

A single --model identifier reaches the right upstream through the proxy — Alias models, OpenRouter (with provider routing), or any OpenAI-compatible endpoint you host yourself.

Alias & provider models

Pick a model with --model (or the ANTHROPIC_MODEL default). Alias models route to the Alias API; Anthropic and OpenAI model slugs route to their providers.

csi --model alias1
csi --model alias3 --yolo
csi --model openrouter/z-ai/glm-5.1 "tell me a joke"

OpenRouter provider routing

For OpenRouter models, append a :: suffix to control which providers serve the request (maps to OpenRouter’s provider field). Requires OPENROUTER_API_KEY.

openrouter/<provider>/<model>::<key>=<val>[::...]
SuffixDescriptionExample
::provider=A,BPrefer providers in order (disables fallbacks)::provider=Together,Fireworks
::only=A,BOnly use these providers::only=DeepInfra
::ignore=A,BNever use these providers::ignore=Azure
::quant=X,YQuantization filter::quant=fp8,int4
# pin to a specific provider
csi --model openrouter/z-ai/glm-5.1:::provider=z-ai,z-ai::only=z-ai

# exclude Azure, prefer fp8 quantization
csi --model openrouter/meta-llama/llama-4-maverick::ignore=Azure::quant=fp8
Without an inline suffix, the OPENROUTER_PROVIDER, OPENROUTER_PROVIDER_ONLY, OPENROUTER_PROVIDER_IGNORE and OPENROUTER_QUANTIZATION env vars are used as defaults. Inline suffixes always override them.

Custom, local & remote endpoints

Point CSI_CUSTOM_ENDPOINT at any OpenAI-compatible server (vLLM, TGI, Ollama, llama.cpp, a remote host). The proxy translates the scaffold’s wire format to Chat Completions and forwards the system prompt verbatim. Set CSI_CUSTOM_API_KEY if the endpoint needs auth.

# a locally served GGUF model with native tool calling
CSI_CUSTOM_ENDPOINT=http://localhost:5050 csi --model qwen3-8b --no-banner "tell me a joke"

# a remote vLLM / SGLang server
CSI_CUSTOM_ENDPOINT=http://10.0.0.5:8000/v1 csi --model Qwen3.5-27B --no-banner "tell me a joke"

# drive it from any scaffold
CSI_BACKEND=cc CSI_CUSTOM_ENDPOINT=http://10.0.0.5:8000/v1 csi --model Qwen3.5-27B --yolo
Every routing variable is catalogued in Environment variables; once a model is reachable, any scaffold can use it like any other.
Configure

Channels

CSI agents can listen on messaging channels. An inbound message spawns a headless CSI session; the agent’s reply is sent back through the channel.

Credentials can be set globally in ~/.csi/config/settings.json or per-agent in the agent’s YAML frontmatter (channel.botToken, etc.). Agent-level values take priority.

Telegram

  • 1
    Create a bot
    Message @BotFather, run /newbot, and copy the token.
  • 2
    Add the token
    Globally in settings.json, or per-agent in frontmatter.
  • 3
    Bind an agent
    Add a channel: { type: telegram } block to the agent.
  • 4
    Launch
    Reinstall, then run csi with the agent.

Global token in ~/.csi/config/settings.json:

{ "channels": { "telegram": { "botToken": "123456:ABC-DEF..." } } }

Agent with a channel binding (plugins/csi/agents/mybot.md):

---
name: mybot
description: "My Telegram bot"
model: alias1
channel:
  type: telegram
  # botToken: "123456:ABC..."   # optional per-agent override
permissionMode: bypassPermissions
---
Your agent system prompt here.
csi --model alias1 --agent csi:mybot --no-banner --yolo

Google Chat

  • 1
    Enable the API
    In Google Cloud Console, create a project and enable the Google Chat API.
  • 2
    Service account
    Create one and download the JSON key file.
  • 3
    Webhook URL
    Point the Chat app at https://<tunnel>/webhooks/googlechat (use ngrok / cloudflared for localhost).
  • 4
    Bind & launch
    Add channel: { type: googlechat } to an agent, reinstall, and the webhook is served by the proxy.

Global config in ~/.csi/config/settings.json:

{
  "channels": {
    "googlechat": {
      "serviceAccountFile": "/path/to/service-account.json",
      "audienceType": "project-number",
      "audience": "123456789"
    }
  }
}
Operate

Dynamic workflows

csi agents workflow brings deterministic, script-driven multi-agent orchestration into the multi-scaffold fleet. Describe a task; CSI fans agents out — across scaffolds and models — and synthesises their results. Unlike a prose “spawn some agents” prompt, the control flow is deterministic and resumable.

Run one

No script needed — describe it in natural language and CSI parses the topic, agent counts and scaffolds:

# one agent per scaffold, each a different model
csi agents workflow "pentest aliasrobotics.com, an agent per scaffold, each a different model"

# 10 agents on the default scaffold
csi agents workflow "compare TLS vs SSH, 10 agents"

# explicit fan-out
csi agents workflow fanout "<topic>" --scaffold cc,cai --per-scaffold 2 --model alias2-mini

# run or resume an explicit script
csi agents workflow run path/to/flow.js [--args '<json>'] [--resume <runId>]
csi agents workflow list | stop <runId>

You can also launch one straight from the csi agents TUI prompt: typing workflow … highlights the keyword and dispatches a fan-out detached, so the group appears in the roster as its agents come up.

How it works

A plain-English request becomes a deterministic script through a three-layer interpretation ladder (first usable result wins). Whatever the layer, the output is the same artifact — a JS workflow script under ~/.csi/workflows/<runId>/ — so every run is inspectable, editable and --resume-able.

LayerProducesWhen
L1 — authorA full model-written JS workflow (any shape, not just fan-out).Opt-in: --compose / CSI_WF_COMPOSE=1
L2 — planA constrained {topic, agents[], synthesis} plan → always-valid fan-out.Default (one planning call)
L3 — regexDirectives parsed deterministically (counts, per-scaffold, models).Fallback: explicit flags or CSI_WF_NO_LLM=1

The engine runs the script in a sandbox with phase(), parallel(), pipeline(), agent(), budget and log() primitives, plus a content-addressed journal for resume. Each agent() crosses a single dispatch seam into the fleet — a real tmux job on any scaffold (cc, claude, codex, cai, gcai, vibe) — and a final synthesis agent integrates every view, citing each agent’s transcript.

NL → script → fleet — the one seam
  csi agents workflow "pentest target.com, an agent per scaffold"
                       |
   (1) INTERPRETATION LADDER     L1 author / L2 plan / L3 regex
                       |   ->  workflow.js  (~/.csi/workflows/<runId>, resumable)
   (2) ENGINE (node:vm sandbox)  phase . parallel . pipeline . agent . budget
                       |   agent(prompt, { scaffold, model })   <- the host seam
   (3) DISPATCH SEAM             each agent() -> a real tmux fleet job, live in
                       |          csi agents:  cc . claude . codex . cai . gcai . vibe
                       v
              SYNTHESIS agent  -> integrates every view, cites each transcript
Every run persists under ~/.csi/workflows/<runId>/ and can be inspected, edited and resumed. The default fan-out scaffold is cc; dispatched agents appear live in the agent view. Upstream design reference: code.claude.com/docs/en/workflows.
Operate

Multi-agent orchestration

CSI is a meta-scaffold: it can run a single agent or fan out to n agents at once — any mix of scaffolds (one or more CAI instances, one or more cc / Claude Code instances, Codex, GCAI, Vibe) and models — all under one csi wrapper, sharing one proxy and one cost ledger. This is where CSI does what a single scaffold cannot.

See the recommended setup in action: a short demo of the multi-agent flow — asciinema.org/a/Wp0kszzVmx2pQoza.

The agent roster (csi agents)

One TUI dispatches, monitors, attaches to, replies to and stops background sessions across every scaffold. Each job is routed through the shared proxy, so a single model identifier reaches the right upstream from whichever scaffold dispatched it.

# open the cross-scaffold roster
csi agents

# one-shot dispatch (fire and forget) on the default scaffold (cc)
csi agents "investigate the flaky auth flow on 10.0.0.5"

# dispatch on a specific scaffold
CSI_BACKEND=cai   csi agents "enumerate SMB shares on 10.0.0.5"
CSI_BACKEND=codex csi agents "summarise the findings so far"

The roster shows each agent’s jobId, its scaffold@model, and live state (working / done / blocked / failed). Full architecture is on the Architecture page.

Mix agents — and have them correct each other

Because every agent is addressable by jobId, a new prompt can build directly on a previous agent’s work — including across scaffolds. Reference a prior agent with @<jobId> and CSI injects that agent’s last output and transcript pointer into the new prompt:

# have a cc agent review and correct what a CAI agent produced
csi agents "@a05738af review this exploit for false positives and fix it"

# ask a fresh agent to get inspired by an earlier one's recon
csi agents "using @a05738af's port scan, propose three privilege-escalation paths"

This is the recommended way to work: let several agents tackle the same target from different angles, then point one at another’s output to verify, refine or cross-check it.

Collaboration modes

For a coordinated team rather than independent jobs, group agents and pick a shared-memory mechanism. The default is a Blackboard: a shared append-log (a trusted notes.md plus a suggestive hypotheses.md) that members read and write as they progress, so the group converges instead of duplicating work.

# a 4-scaffold team sharing a blackboard
csi agents --scaffold claude,codex,gcai,cai --group bb --collab blackboard \
  "pentest staging.example.com (in-scope only); coordinate via the blackboard"

Other mechanisms (scratchpad, topic, mailbox, verify) trade off how tightly members coordinate. For deterministic, script-driven fan-out and synthesis, use Dynamic workflows instead — CSI plans the fan-out, runs an agent per scaffold/model and synthesises every view into one cited answer.

Recommended setup: keep cc as the default driver, add a claude agent for a second strong opinion, and fold in cai / codex / gcai for breadth — then let them cross-check each other via @<jobId> or a shared blackboard. One target, several perspectives, one ledger.
Operate

Sessions, limits & logs

How a long session manages its context (compaction), what happens when you hit the rate limit on a PRO key, and where to find — and how to export — the .jsonl session logs from the Docker container.

Compaction

Compaction summarises the older part of a conversation so a long session keeps running without overflowing the model’s context window. It works across all supported scaffolds. Most of the time it is automatic — CSI compacts proactively as the context fills and recovers transparently from an over-length request — but you can also trigger it yourself:

/compact
ScaffoldCompaction
cc / claudeAutomatic (proactive as the window fills, plus transparent recovery on an over-length request) and manual via /compact.
caiUses CAI’s own (legacy) compaction path. It still works, but behaves differently from cc; the CAI_COMPACT_REPL variable governs it (the installer sets CAI_COMPACT_REPL=0 by default).
If /compact appears stuck (e.g. it waits at a confirmation and pressing y + Enter never returns), it should not normally block other actions — compaction is expected to work on every scaffold. Rather than quitting the session, grab the session .jsonl transcript (see Accessing logs below) and send it to support@aliasrobotics.com so we can reproduce and escalate. Including the log lets us diagnose far faster than a screenshot.

Rate limits & timeouts

When requests start getting throttled, nothing is broken — this is the deliberate per-key rate limiting that comes with PRO licenses. It exists so that individual keys do not oversaturate our shared inference servers.

  • What you see: requests are slowed or temporarily rejected (HTTP 429, or a 5xx overload) once your key’s quota for the moment is reached.
  • Recovery: once the limit is hit, it takes roughly 3–5 minutes for our servers to start accepting requests from a saturated key again. Waiting it out is enough — no reinstall or restart needed.
  • Automatic backoff: the CSI proxy now rides out the whole cooldown for you. It retries throttled (429) and overloaded (5xx) requests with a true exponential backoff — 2s, 4s, 8s, 16s, then capped at 30s — honoring any Retry-After the server sends, for up to ~5.5 minutes total before surfacing an error. So the current action resumes on its own once the window clears, rather than failing the turn.
The backoff is tunable via CSI_RETRY_BASE_MS, CSI_RETRY_CAP_MS and CSI_RETRY_MAX_ATTEMPTS; the per-request socket ceiling is API_TIMEOUT_MS — see Environment variables. Need higher throughput than a PRO key allows? Contact support@aliasrobotics.com about license tiers.

💾 Accessing logs (and getting them out of Docker)

Every session is logged as .jsonl. The good news for Docker users (e.g. on Kali): the most important logs are already bind-mounted onto your host — you do not need to docker cp them, and they survive the container exiting (CSI runs with --rm).

WhatOn your host (Kali / Linux / macOS)
Proxy API log & cost ledger (all scaffolds)~/.csi/logs/csi_*.jsonl
cc / claude session transcripts~/.csi/docker-config/projects/<cwd>/<sessionId>.jsonl
Your working files~/.csi/workspace/ (mounted as /workspace)

From inside the session you can always resolve the active log path or open the viewer:

# print the path of the active proxy API JSONL
csi agents log --path

# open the log viewer (live)
csi agents log --live        # or --viewer

# print a specific job's recent transcript
csi agents logs <jobId> [--tail N]

Inside the container the same files live under /home/vscode/.csi/logs/ and /home/vscode/.claude/projects/ — both of which map straight to the host paths above, so you can simply open them on Kali after (or during) the run.

CAI transcripts & the docker cp fallback

CAI writes its native transcript to ~/.cai/logs/cai_*.jsonl inside the container, which is not bind-mounted. To pull it (or any other in-container path) to the host without closing the container, copy it from a second terminal while the session is still running:

# find the running CSI container
docker ps

# copy the CAI transcript out to the host
docker cp <container>:/home/vscode/.cai/logs ~/csi-logs/

# or copy a single file
docker cp <container>:/home/vscode/.cai/logs/cai_<id>.jsonl ./
Because the container is started with --rm, anything written only to a non-mounted path (like ~/.cai/logs) is gone once you exit. Copy it out before closing the session, or rely on the bind-mounted ~/.csi/logs/ ledger which persists automatically. When sending a log to support, the .jsonl from ~/.csi/logs/ or the cc/claude transcript is exactly what we need.
Operate

Steering

Steering (abliteration) removes censorship limitations from Alias API models by injecting steering_enabled: true into requests — for authorized red-team work where generating restricted content is necessary. It only affects alias* routes; other providers are unaffected.

Modes

ModeTriggerLifetime
Per-prompt/steering skillAuto-resets on the next user turn.
PersistentCSI_STEERING=1 env varThe entire session.
# without steering (the model may refuse)
csi --model alias3 --yolo -p "Explain how to pick a lock"

# per-prompt steering (auto-resets after this turn)
csi --model alias3 --yolo -p "/steering Explain how to pick a lock"

# persistent steering (entire session)
CSI_STEERING=1 csi --model alias3 --yolo

How it works

The /steering skill POSTs to ${ANTHROPIC_BASE_URL}/csi/steering; the proxy flips an in-memory flag and records the current user-message count as a baseline. On the agent’s next answer the proxy injects steering_enabled:true into the Alias API request, and the model returns an uncensored response. On the next user turn (message count past the baseline) the proxy auto-disables it — tool-use chains within the same turn keep it active. Persistent mode (CSI_STEERING=1) skips the auto-reset.

Steering is for authorized offensive-security work only. Use it within the scope of an engagement and your applicable terms. More on the Steering product page; the CSI_STEERING variable is in Environment variables.
Guides

Example prompts

Copy-and-adapt prompt recipes across red team, blue team and DFIR. Pair them with the Prompt guide for consistent, actionable results.

■ Red Team Offensive security & vulnerability assessment
Web application reconnaissanceRecon

Enumerate subdomains, exposed endpoints, and technology stack of a target web application before deeper testing.

Perform passive and active reconnaissance on https://target.example.com.
Enumerate subdomains, identify the tech stack, map exposed endpoints,
and list any login panels or admin interfaces found. Summarize findings
as a prioritised attack surface report.
OWASP Top 10 web scanWeb

Test a target application for the most critical web vulnerabilities: injections, broken auth, misconfigurations, and more.

Run an OWASP Top 10 assessment against https://target.example.com.
Test for SQL injection, XSS, broken authentication, IDOR, and
security misconfigurations. For each finding report: severity (CVSS),
evidence, and a recommended remediation step.
Network service exploitationNetwork

Scan open ports on a target host, fingerprint services, check for known CVEs, and attempt safe proof-of-concept exploitation.

Scan 192.168.1.100 for open TCP ports. Fingerprint each service and
version. Cross-reference against known CVEs (CVSS >= 7.0). For the
top 3 vulnerabilities, provide a safe PoC exploitation plan and
the exact Metasploit module or command if available.
Credential and privilege escalation auditPrivEsc

After initial access, identify privilege escalation paths on a Linux host using standard enumeration techniques.

I have a low-privilege shell on a Linux box (Ubuntu 22.04).
Enumerate all privilege escalation vectors: SUID binaries, writable
cron jobs, weak sudo rules, world-writable paths, and kernel exploits.
Rank each vector by exploitability and provide the exact command
to exploit the top finding.
■ Blue Team Defensive security & hardening
Firewall rule auditHardening

Review iptables or nftables rules for overly permissive entries, redundant rules, or missing egress controls.

Audit the attached iptables ruleset for security issues.
Flag any rules that allow unrestricted inbound access, missing egress
filtering, permit traffic from 0.0.0.0/0 to sensitive ports, or
contradict a least-privilege model. Output a hardened ruleset diff.
SIEM alert triageDetection

Analyse a batch of SIEM alerts to identify true positives, suppress noise, and prioritise incidents for response.

Analyse the following 50 SIEM alerts from the past 24 hours [paste alerts].
Classify each as true positive, false positive, or needs investigation.
Group related alerts into incidents, assign a severity (Critical / High /
Medium / Low), and recommend the immediate containment action for each
true positive.
Vulnerability patch prioritisationVuln Mgmt

Given a scanner report, rank findings by exploitability and business impact to build a realistic patching roadmap.

Given the attached Nessus/OpenVAS scan report for our production
environment, prioritise all findings with CVSS >= 6.0. Factor in:
public exploit availability, internet exposure, and asset criticality.
Output a patching roadmap with estimated remediation effort per item.
SSH and remote access hardeningHardening

Review and harden SSH daemon configuration against common attack vectors such as brute force and weak ciphers.

Review the attached /etc/ssh/sshd_config. Identify misconfigurations:
permitted root login, weak ciphers/MACs, password auth enabled,
missing idle timeouts, or absent AllowUsers restriction. Output
a hardened config with inline comments explaining each change.
■ DFIR Digital Forensics & Incident Response
Malware triage & IOC extractionMalware

Perform static and behavioural analysis on a suspicious binary and produce a structured IOC report.

Analyse the suspicious binary at /samples/unknown.exe (SHA-256: <hash>).
Perform static analysis: strings, imports, PE headers, entropy.
Identify IOCs: C2 addresses, registry keys, file drops, mutex names.
Classify the malware family if possible and output a MISP-compatible
IOC list in JSON format.
Incident timeline reconstructionTimeline

Correlate logs from multiple sources to build a chronological attack timeline from initial access to impact.

I have auth.log, syslog, and web access logs from a potentially
compromised server covering 2026-05-28 to 2026-06-01 [paste logs].
Reconstruct a chronological attack timeline: initial access vector,
lateral movement, persistence mechanisms, and data accessed.
Output as a Markdown table with timestamp, event, and MITRE ATT&CK TTP.
Data exfiltration investigationExfil

Investigate network flow data or proxy logs for signs of large-scale or stealthy data exfiltration.

Analyse the attached network flow logs (NetFlow/PCAP) for signs of
data exfiltration over the past 7 days. Look for: large outbound
transfers to unknown IPs, DNS tunnelling patterns, beaconing at
regular intervals, and connections to known C2 ranges. Estimate
the volume exfiltrated and identify the destination endpoints.
Compromised account forensicsIdentity

Investigate a potentially hijacked user account by correlating authentication and activity logs.

Investigate the account jdoe@example.com for signs of compromise.
Correlate Azure AD sign-in logs, MFA events, and mail access logs
from the past 30 days. Identify: impossible travel, new device
registrations, inbox rule creation, and abnormal send volume.
Provide a yes/no verdict on compromise and recommended remediation steps.
■ Reversing & hardware Firmware, protocols & embedded targets
Firmware reverse engineeringFirmware

Load a flash image into a decompiler, map the boot flow, and pull secrets and weaknesses out of the binary.

Load the firmware image at /samples/fw.bin (AVR8 / ATmega2560) into
Ghidra via GhidraMCP. Map the boot flow from the RESET vector,
decompile the authentication routine, and identify any hardcoded
credentials, keys, or timing-vulnerable comparisons. Report each
finding with its address and the relevant CWE.
Black-box protocol fuzzingFuzzing

From a spec and a sample client — no source — generate targeted fuzz cases and triage the crashes.

Here is a 1,780-line spec for a custom binary TLV protocol and a
sample client. With no source code, analyse the format and generate
targeted fuzz cases across buffer boundaries, integer arithmetic,
state violations and auth bypass. Run them against the ASAN server
at 127.0.0.1:9000 and triage each crash to a root-cause class.
BLE / hardware testingHardware

Enumerate a Bluetooth LE target’s GATT services and work through read/write, notify and auth challenges.

Enumerate the GATT services of the BLE peripheral at MAC
AA:BB:CC:DD:EE:FF. For each characteristic, attempt read, write and
notify, and document the handle map. Then work the challenge flags in
order — MTU negotiation, MAC spoofing and brute force — explaining
the protocol behaviour behind each step.
Pentest report generationReporting

Turn raw findings into a client-ready deliverable that preserves a template’s formatting.

Using the attached DOCX template and these findings [paste], write a
Python generator (python-docx) that fills a full report: executive
summary, scope, methodology, per-finding detail (severity, evidence,
reproduction, remediation) and a technical appendix — preserving the
template’s formatting and images.
Guides

Use cases

Real pentesting workflows run with the CSI suite on alias2-mini, across heterogeneous scaffolds. Each card summarises an unedited agent session — the full interactive recordings (with clickable timestamps) live on the CSI suite page.

01 Bare-metal firmware reversing
Claude Code alias2-mini · Opus 4.7
RHme2 secret_sauce · AVR8 / ATmega2560

The agent loaded an 11.4 KB AVR8 flash image into Ghidra via GhidraMCP and ran a full static reverse-engineering session — mapping the boot flow from the RESET vector, decompiling the authentication loop, and pinpointing a timing-vulnerable compare at 0x0006e8. It extracted the hardcoded password (TImInG@ttAkw0rk) and AES-128 key straight from flash, and flagged three CWEs (timing side-channel, hardcoded key, weak nonce).

alias2-mini recovered the exact same secrets as Opus 4.7 — frontier-grade reversing, fully on-prem. Firmware never leaves your lab.
Watch the recording →
02 Pentest DOCX report generation
Codex alias2-mini
TCM Security report template · python-docx

Handed the TCM Security DOCX template and the findings from the firmware session, the agent wrote a Python generator that programmatically fills the report — executive summary, scope, methodology, two detailed findings (plaintext password / Critical, timing-vulnerable compare / High), reproduction, remediation and a technical appendix — preserving the original template formatting and images.

Raw findings become a client-ready deliverable in minutes. Codex on alias2-mini closes the loop from exploitation to documentation, on-prem.
Watch the recording →
03 Document analysis & attack-path generation
Claude Code · Mistral Vibe alias2-mini · Opus 4.7
ROS 2 design specs & project wiki

The agent ingested the public ROS 2 design specifications and project wiki, then threat-modelled the architecture — surfacing DDS transport (unauthenticated by default), SROS2 key distribution, node-graph introspection and parameter-server access as attack surfaces — and generated concrete attack paths mapped against the documented design. The same task was run across two scaffolds — Claude Code and Mistral's Vibe.

alias2-mini produced the same threat model and attack paths as Opus 4.7, and ran cleanly across both Claude Code and Mistral Vibe — sovereign, scaffold-agnostic threat modeling without shipping your architecture to a third-party cloud.
Watch the recording →
04 Vulnerability analysis (Nessus)
Claude Code alias2-mini · Opus 4.7
Real Nessus XML exports · public sample scans

Working from real Nessus XML exports, the agent wrote a parser that extracts host inventories, maps severity distributions and emits per-host and aggregate JSON. It then prioritised the findings, cross-referenced CVEs and produced remediation guidance — two scans triaged in parallel.

alias2-mini finished in 1:17 — neck-and-neck with Opus 4.7 (1:13). Near-frontier triage speed with zero scan data leaving the perimeter.
Watch the recording →
05 Exploitation & PoC generation
CSI alias2-mini
CyberGym benchmark

Against CyberGym — a benchmark that hands the agent a vulnerable codebase and a vulnerability description — CSI analysed the source, understood the flaw, wrote a proof-of-concept and submitted a working exploit autonomously, going from analysis to weaponised PoC end-to-end.

The full CSI scaffold on alias2-mini turns a vulnerability description into a validated PoC in 82 seconds — autonomy, on-prem.
Watch the recording →
06 Bluetooth / BLE testing
Claude Code alias2-mini
hackgnar ble_ctf · ESP32 GATT · 20 flags

The original BLE CTF needs an ESP32 and a Bluetooth dongle. The agent instead dockerized the whole challenge — building a Python BLE GATT server that emulates the firmware plus a client CLI, no hardware required — then solved all 20 flags via GATT enumeration, read/write, notifications, MTU negotiation, MAC spoofing, brute-force and OSINT, with protocol commentary for each.

alias2-mini removed the hardware dependency entirely and scored 20/20 — hardware security testing that scales without a lab bench.
Watch the recording →
07 Black-box protocol fuzzing
GCAI alias2-mini
SCIP — custom binary TLV protocol

Given only a 1,780-line protocol spec and a sample client — no source code — the agent analysed the format, generated ~40 targeted fuzz cases across buffer boundaries, format strings, integer arithmetic, state violations and auth bypass, then ran them against a live ASAN-instrumented server. It triggered three distinct memory-safety bugs: null-byte injection, a double-free during firmware upload, and a signed-integer overflow yielding negative array indices.

The GCAI scaffold on alias2-mini found real memory-corruption bugs from a spec alone — true black-box capability, no insider knowledge.
Watch the recording →
Every recording is an unedited agent session. Where a frontier model ran the same task, the suite page shows the side-by-side comparison — see all eight workflows →.
Guides

Prompt guide

CSI performs best when prompts are precise and focused. These five principles help you get consistent, actionable results — pair them with the example prompts.

1
One objective per prompt
Break complex tasks into discrete steps. Each prompt should have a single, measurable goal. Chain them sequentially rather than combining everything in one message.
Avoid
Scan the server, find vulns, exploit them and write a report.
Better
Scan 10.0.0.1 for open ports and fingerprint each service. List findings only.
2
Define scope and constraints explicitly
Always state the target, environment, and any boundaries. Ambiguous scope leads to incomplete or out-of-bounds actions.
Avoid
Check the web app for vulnerabilities.
Better
Test https://staging.example.com (in-scope only). Do not touch /admin. Report OWASP Top 10 findings only.
3
Specify the expected output format
Tell CSI exactly how to structure the response: table, JSON, Markdown, bullet list. This makes results easier to use downstream.
Avoid
Give me the CVEs for these services.
Better
List CVEs as a Markdown table: CVE ID | CVSS | Service | PoC available (yes/no).
4
Provide context upfront
Include OS version, network topology, tool output, or log excerpts before asking the question. Context-free prompts produce generic answers.
Avoid
How do I escalate privileges here?
Better
I have a shell as www-data on Ubuntu 22.04. Kernel 5.15. Here is the sudo -l output: [paste]. What are my escalation options?
5
Iterate: use the previous output as next input
After each response, paste the relevant output back and build on it. This keeps the analysis grounded in real data rather than hypotheticals.
Avoid
Now exploit the vulnerabilities you found.
Better
From the previous scan, port 8080 runs Tomcat 9.0.31. Identify the relevant CVE and provide a safe PoC.
Guides

Troubleshooting

Common symptoms and their fixes. If none of these resolve your issue, reach out to support.

Common issues

SymptomFix
CAI shows Processing initial prompt: --mount...Your launcher is outdated. Re-run curl -Ls aliasrobotics.com/get_csi | sh.
UnboundLocalError: Text when using CAIKnown CAI 1.1.2 bug — fixed in CAI 1.1.3. Re-run get_csi (launcher hotfix) or update to the latest CSI image.
Mounted folder not visibleAsk the agent to run a shell command, e.g. Run: ls -la /your/mount/path. Typing ls alone sends chat, not shell.
ln: Permission denied on ~/.csi/workspace/.env~/.csi/workspace was often created as root by Docker. Fix ownership: sudo chown -R $USER:$USER ~/.csi/workspace, then re-run ~/.csi/setup-cai-env.sh --link … or the installer.
Repo .env edits not reflected in CAIRestart csi — CAI loads /workspace/.env at startup. /env set changes are session-only and are not saved to the file.
CAI_MODEL missing from /env but model worksExpected — CSI sets CAI_MODEL from ANTHROPIC_MODEL before CAI starts. Use csi --model alias1 or edit the launcher’s -e ANTHROPIC_MODEL=… to change the model.
A session feels weaker than your old CAI runsExpected if you are on the default scaffold — csi runs cc, not CAI, and cc/claude outperform CAI in our benchmarking. Prompting is identical across scaffolds. See Which one should I use? and Multi-agent.
/compact hangs / pressing y+Enter never returnsCompaction works on every scaffold and should not block other actions. Instead of quitting, export the session .jsonl (csi agents log --path, or from ~/.csi/logs/) and send it to support so we can reproduce. See Sessions, limits & logs.
Requests rejected / throttled after heavy usePer-key rate limiting on PRO licenses, not a fault. The proxy now retries 429/5xx with exponential backoff (2→30s, honoring Retry-After) for up to ~5.5 min, so the action resumes on its own as the ~3–5 min cooldown clears. Tunable via CSI_RETRY_MAX_ATTEMPTS. See Rate limits & timeouts.
Can’t find / export the .jsonl log from DockerThe proxy log & cost ledger are bind-mounted to the host at ~/.csi/logs/ (and cc/claude transcripts at ~/.csi/docker-config/projects/) — no docker cp needed, they survive container exit. For CAI’s in-container ~/.cai/logs, use docker cp before closing. See Accessing logs.

Support

Having trouble or need assistance? Our team is ready to help.

support@aliasrobotics.com