|
|
2 săptămâni în urmă | |
|---|---|---|
| .. | ||
| scripts | 861139ca24 Add a cli installer (#10474) | 3 săptămâni în urmă |
| src | caa37792ca chore(cli): change default model to anthropic/claude-opus-4.5 (#10544) | 2 săptămâni în urmă |
| README.md | 861139ca24 Add a cli installer (#10474) | 3 săptămâni în urmă |
| eslint.config.mjs | b11d53adf4 VSCode shim + basic cli (#10452) | 3 săptămâni în urmă |
| install.sh | 861139ca24 Add a cli installer (#10474) | 3 săptămâni în urmă |
| package.json | b11d53adf4 VSCode shim + basic cli (#10452) | 3 săptămâni în urmă |
| tsconfig.json | b11d53adf4 VSCode shim + basic cli (#10452) | 3 săptămâni în urmă |
| tsup.config.ts | 861139ca24 Add a cli installer (#10474) | 3 săptămâni în urmă |
| vitest.config.ts | b11d53adf4 VSCode shim + basic cli (#10452) | 3 săptămâni în urmă |
Command Line Interface for Roo Code - Run the Roo Code agent from the terminal without VSCode.
This CLI uses the @roo-code/vscode-shim package to provide a VSCode API compatibility layer, allowing the main Roo Code extension to run in a Node.js environment.
Install the Roo Code CLI with a single command:
curl -fsSL https://raw.githubusercontent.com/RooCodeInc/Roo-Code/main/apps/cli/install.sh | sh
Requirements:
Custom installation directory:
ROO_INSTALL_DIR=/opt/roo-code ROO_BIN_DIR=/usr/local/bin curl -fsSL ... | sh
Install a specific version:
ROO_VERSION=0.1.0 curl -fsSL https://raw.githubusercontent.com/RooCodeInc/Roo-Code/main/apps/cli/install.sh | sh
Re-run the install script to update to the latest version:
curl -fsSL https://raw.githubusercontent.com/RooCodeInc/Roo-Code/main/apps/cli/install.sh | sh
rm -rf ~/.roo/cli ~/.local/bin/roo
For contributing or development:
# From the monorepo root.
pnpm install
# Build the main extension first.
pnpm --filter roo-cline bundle
# Build the cli.
pnpm --filter @roo-code/cli build
By default, the CLI prompts for approval before executing actions:
export OPENROUTER_API_KEY=sk-or-v1-...
roo "What is this project?" --workspace ~/Documents/my-project
In interactive mode:
-y)For automation and scripts, use -y to auto-approve all actions:
roo -y "Refactor the utils.ts file" --workspace ~/Documents/my-project
In non-interactive mode:
| Option | Description | Default |
|---|---|---|
-w, --workspace <path> |
Workspace path to operate in | Current directory |
-e, --extension <path> |
Path to the extension bundle directory | Auto-detected |
-v, --verbose |
Enable verbose output (show VSCode and extension logs) | false |
-d, --debug |
Enable debug output (includes detailed debug information, prompts, paths, etc) | false |
-x, --exit-on-complete |
Exit the process when task completes (useful for testing) | false |
-y, --yes |
Non-interactive mode: auto-approve all actions | false |
-k, --api-key <key> |
API key for the LLM provider | From env var |
-p, --provider <provider> |
API provider (anthropic, openai, openrouter, etc.) | openrouter |
-m, --model <model> |
Model to use | Provider default |
-M, --mode <mode> |
Mode to start in (code, architect, ask, debug, etc.) | code |
-r, --reasoning-effort <effort> |
Reasoning effort level (none, minimal, low, medium, high, xhigh) | medium |
By default, the CLI runs in quiet mode (suppressing VSCode/extension logs) and only shows assistant output. Use -v to see all logs, or -d for detailed debug information.
The CLI will look for API keys in environment variables if not provided via --api-key:
| Provider | Environment Variable |
|---|---|
| anthropic | ANTHROPIC_API_KEY |
| openai | OPENAI_API_KEY |
| openrouter | OPENROUTER_API_KEY |
| google/gemini | GOOGLE_API_KEY |
| mistral | MISTRAL_API_KEY |
| deepseek | DEEPSEEK_API_KEY |
| bedrock | AWS_ACCESS_KEY_ID |
┌─────────────────┐
│ CLI Entry │
│ (index.ts) │
└────────┬────────┘
│
▼
┌─────────────────┐
│ ExtensionHost │
│ (extension- │
│ host.ts) │
└────────┬────────┘
│
┌────┴────┐
│ │
▼ ▼
┌───────┐ ┌──────────┐
│vscode │ │Extension │
│-shim │ │ Bundle │
└───────┘ └──────────┘
CLI Entry Point (index.ts): Parses command line arguments and initializes the ExtensionHost
ExtensionHost (extension-host.ts):
@roo-code/vscode-shimrequire('vscode') to return the mockMessage Flow:
emit("webviewMessage", {...})emit("extensionWebviewMessage", {...})# Watch mode for development
pnpm dev
# Run tests
pnpm test
# Type checking
pnpm check-types
# Linting
pnpm lint
To create a new release, run the release script from the monorepo root:
# Release using version from package.json
./apps/cli/scripts/release.sh
# Release with a specific version
./apps/cli/scripts/release.sh 0.1.0
The script will:
Prerequisites:
gh) installed and authenticated (gh auth login)Make sure you've built the main extension first:
cd src
pnpm bundle
The CLI expects the extension to be a CommonJS bundle. Make sure the extension's esbuild config outputs CommonJS.
The CLI intercepts require('vscode') calls. If you see this error, the module resolution interception may have failed.