|
|
1 tydzień temu | |
|---|---|---|
| .. | ||
| docs | a33117a83f Some cleanup in ExtensionHost (#10600) | 1 tydzień temu |
| scripts | e8ed344b0f Allow the cli release script to install locally for testing (#10597) | 1 tydzień temu |
| src | a33117a83f Some cleanup in ExtensionHost (#10600) | 1 tydzień temu |
| CHANGELOG.md | ea9717d7ba Add a TUI (#10480) | 1 tydzień temu |
| README.md | ea9717d7ba Add a TUI (#10480) | 1 tydzień temu |
| eslint.config.mjs | b11d53adf4 VSCode shim + basic cli (#10452) | 2 tygodni temu |
| install.sh | ea9717d7ba Add a TUI (#10480) | 1 tydzień temu |
| package.json | a33117a83f Some cleanup in ExtensionHost (#10600) | 1 tydzień temu |
| tsconfig.json | fc21101a99 More file organization for the cli (#10599) | 1 tydzień temu |
| tsup.config.ts | ea9717d7ba Add a TUI (#10480) | 1 tydzień temu |
| vitest.config.ts | fc21101a99 More file organization for the cli (#10599) | 1 tydzień temu |
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 ~/Documents/my-project -P "What is this project?"
You can also run without a prompt and enter it interactively in TUI mode:
roo ~/Documents/my-project
In interactive mode:
-y)For automation and scripts, use -y to auto-approve all actions:
roo ~/Documents/my-project -y -P "Refactor the utils.ts file"
In non-interactive mode:
To use Roo Code Cloud features (like the provider proxy), you need to authenticate:
# Log in to Roo Code Cloud (opens browser)
roo auth login
# Check authentication status
roo auth status
# Log out
roo auth logout
The auth login command:
~/.config/roo/credentials.jsonTokens are valid for 90 days. The CLI will prompt you to re-authenticate when your token expires.
Authentication Flow:
┌──────┐ ┌─────────┐ ┌───────────────┐
│ CLI │ │ Browser │ │ Roo Code Cloud│
└──┬───┘ └────┬────┘ └───────┬───────┘
│ │ │
│ Open auth URL │ │
│─────────────────>│ │
│ │ │
│ │ Authenticate │
│ │─────────────────────>│
│ │ │
│ │<─────────────────────│
│ │ Token via callback │
│<─────────────────│ │
│ │ │
│ Store token │ │
│ │ │
| Option | Description | Default |
|---|---|---|
[workspace] |
Workspace path to operate in (positional argument) | Current directory |
-P, --prompt <prompt> |
The prompt/task to execute (optional in TUI mode) | None |
-e, --extension <path> |
Path to the extension bundle directory | Auto-detected |
-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 | anthropic/claude-sonnet-4.5 |
-M, --mode <mode> |
Mode to start in (code, architect, ask, debug, etc.) | code |
-r, --reasoning-effort <effort> |
Reasoning effort level (unspecified, disabled, none, minimal, low, medium, high, xhigh) | medium |
--ephemeral |
Run without persisting state (uses temporary storage) | false |
--no-tui |
Disable TUI, use plain text output | false |
| Command | Description |
|---|---|
roo auth login |
Authenticate with Roo Code Cloud |
roo auth logout |
Clear stored authentication token |
roo auth status |
Show current authentication status |
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 |
| ... | ... |
Authentication Environment Variables:
| Variable | Description |
|---|---|
ROO_WEB_APP_URL |
Override the Roo Code Cloud URL (default: https://app.roocode.com) |
┌─────────────────┐
│ 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, execute the /cli-release slash command:
roo ~/Documents/Roo-Code -P "/cli-release" -y
The workflow will: