Commands
Complete reference for all Edsger CLI commands — authentication, configuration, code review, refactoring, workflow, growth analysis, app store publishing, and more.
CLI Commands
Authentication
The CLI supports browser-based authentication that links your local CLI to your Edsger platform account.
edsger login
Opens your default browser to the Edsger authentication page where you generate a CLI token, then paste it into the terminal.
edsger loginWhat happens:
- The CLI opens
edsger.ai/cli/authin your browser (macOS, Windows, and Linux withxdg-opensupported) - You sign in to Edsger (if not already signed in)
- Click "Generate CLI Token" on the page
- Copy the token and paste it into the CLI prompt
- The CLI validates the token by calling the MCP server
- On success, credentials are saved to
~/.edsger/auth.jsonwith0600permissions
If you are already logged in, the CLI will ask if you want to re-authenticate.
After successful login, the CLI displays a list of all products you have access to, along with their IDs — useful for commands like edsger growth <product-id>.
edsger logout
Removes stored authentication credentials.
edsger logoutDeletes the ~/.edsger/auth.json file. After logout, platform-connected features (agent workflow, growth, app store, etc.) will not work until you log in again.
edsger status
Shows current login and session status.
edsger statusDisplays:
- MCP server URL
- Login timestamp
- Token preview (first 8 and last 4 characters)
Configuration Management
Manage persistent environment variables stored in ~/.edsger/env.json. These are loaded automatically on every CLI run, making them ideal for API keys and other settings you don't want to set on every terminal session.
edsger config set <key=value>
Store an environment variable:
edsger config set ELEVENLABS_API_KEY=sk-xxxxx
edsger config set DEEPGRAM_API_KEY=xxxxx
edsger config set EDSGER_PRODUCT_ID=your-product-uuidedsger config get <key>
View the value of a stored variable:
edsger config get ELEVENLABS_API_KEYedsger config list
List all stored environment variables (sensitive values are masked):
edsger config listedsger config unset <key>
Remove a stored variable:
edsger config unset ELEVENLABS_API_KEYEnvironment Variable Priority
When the same variable is set in multiple places, the highest-priority source wins:
| Priority | Source | Scope | Example |
|---|---|---|---|
| 1 (highest) | Shell environment | Session | export EDSGER_MCP_TOKEN=xxx |
| 2 | .env file in current directory | Project | EDSGER_MCP_TOKEN=xxx in .env |
| 3 (lowest) | ~/.edsger/env.json | Global | edsger config set EDSGER_MCP_TOKEN=xxx |
This means you can set global defaults via edsger config set, override them per-project with a .env file, and further override per-session with shell exports.
Project Initialization
edsger --init
Analyzes your codebase using the Claude Agent SDK and generates structured project documentation in a .edsger/ directory.
edsger --init
edsger --init --verboseGenerated files:
| File | Contents |
|---|---|
project-overview.md | Project description, purpose, and goals |
tech-stack.md | Technologies, frameworks, and dependencies |
architecture.md | System architecture, module structure, and data flow |
coding-guidelines.md | Code standards, naming conventions, and patterns |
development-setup.md | Setup instructions, prerequisites, and build steps |
Why this matters: When the CLI later runs AI phases (analysis, design, implementation), it uses these files as context to understand your project. Better project documentation leads to more accurate AI output. You can edit the generated files to correct or add details the AI missed.
The initialization process:
- Scans directory structure and file types
- Reads package manifests (package.json, requirements.txt, etc.)
- Analyzes source code patterns and architecture
- Identifies frameworks, libraries, and conventions
- Generates documentation using Claude's understanding of the codebase
Code Review
edsger --review
AI-powered code review that analyzes your uncommitted changes and reports issues with three severity levels.
# Review all uncommitted changes
edsger --review
# Review only staged changes (ideal for pre-commit hooks)
edsger --review --staged
# Review specific file patterns
edsger --review --files "**/*.ts"
edsger --review --files "src/**/*.js" "lib/**/*.ts"
# Combine with verbose output
edsger --review --staged --verboseHow it works:
- Collects changed files (all uncommitted, staged only, or matching patterns)
- Filters files against your configured
patternsandexcludesettings - Sends each file's diff to the Claude Agent SDK for analysis
- Returns a verdict per file:
| Status | Meaning | Exit Code Impact |
|---|---|---|
| BLOCK | Critical issue that must be fixed | Exit code 1 (if severity is error) |
| WARN | Should be addressed but not blocking | Exit code 0 (unless severity is warning) |
| OK | Code passes quality standards | Exit code 0 |
Exit code behavior:
- When
severityis"error"(default): Only BLOCK issues cause exit code 1 - When
severityis"warning": Both BLOCK and WARN issues cause exit code 1
Git Pre-Commit Hook Integration
Add Edsger code review to your git pre-commit hook to catch issues before they're committed:
#!/bin/sh
# .git/hooks/pre-commit
npx edsger --review --stagedOr with Husky:
{
"husky": {
"hooks": {
"pre-commit": "npx edsger --review --staged"
}
}
}Code Refactoring
edsger --refactor
Analyzes code in the current directory, identifies improvements, and applies them automatically.
edsger --refactor
edsger --refactor --verboseWhat it does:
- Scans the current directory using your configured file patterns
- Uses the Claude Agent SDK to analyze code quality
- Identifies: code smells, duplication, complex functions, poor naming, missing error handling, and other technical debt
- Streams refactoring changes as they're applied
- You can review the changes with
git diffafter completion
This is a destructive operation in the sense that it modifies files in place. Make sure your changes are committed or stashed before running.
Agent Workflow (Default Command)
edsger
The primary command. When run with no flags, it starts the cross-product agent workflow that continuously discovers, claims, and processes features.
# Start the agent (uses stored credentials from `edsger login`)
edsger
# With custom concurrency
edsger --concurrency 5
# With verbose logging
edsger --verboseWhat it does:
- Initializes — Registers a CLI session with the server, starts the auto-update checker, creates the workspace directory (
~/edsger/or./edsger/) - Discovers features — Polls the MCP server every 30 seconds for
ready_for_aifeatures across all products you have access to - Claims features — Picks up features to process (up to your concurrency limit, default 3, max 10)
- Processes each feature in an isolated child process:
- Fetches GitHub configuration for the feature's product
- Clones the repository to
~/edsger/{featureId}/(or reuses if already cloned) - Executes the feature's configured execution mode (full pipeline, single phase, or from a specific phase)
- Updates feature status on the platform at each phase transition
- Creates pull requests on GitHub when implementation is complete
- Handles failures — Failed features are retried up to
maxRetriestimes with a cooldown period. If a feature was updated on the platform (e.g., someone provided feedback), the cooldown is bypassed. - Chat worker — A parallel subprocess monitors chat messages from the platform and receives phase events from feature workers
- Graceful shutdown — Press
Ctrl+Cto stop. Active workers are terminated gracefully, statistics are displayed, and the session is deregistered.
See the Workflow page for detailed documentation of how the agent workflow processes features.
edsger --product-level
Legacy mode that processes features for a single product. Requires the EDSGER_PRODUCT_ID environment variable.
export EDSGER_PRODUCT_ID=your-product-uuid
edsger --product-levelAuto-detection: If EDSGER_PRODUCT_ID is set in the environment and you run edsger without flags, it automatically uses legacy mode for backward compatibility.
Growth Analysis
edsger growth <product-id>
Runs AI-powered growth analysis that reviews your product, analyzes existing campaigns, and generates marketing channel recommendations with content suggestions.
edsger growth abc123-product-uuid
edsger growth abc123-product-uuid --verbosePrerequisites:
- Authenticated with
edsger login - A Text-to-Speech API key for video narration (set one of):
ELEVENLABS_API_KEY— ElevenLabs TTS (primary)DEEPGRAM_API_KEY— Deepgram TTS (alternative)
- Playwright installed (for screenshot generation)
- FFmpeg installed (for video compilation)
What it does:
- Fetches your product data from the Edsger platform
- Reviews existing growth campaigns and their performance
- Analyzes the product's market positioning
- Recommends marketing channels (12+ channels including social media, content marketing, paid ads, etc.)
- Generates tailored content for each recommended channel
- Optionally generates demo videos with:
- Automated product screenshots (via Playwright)
- AI-generated narration (via TTS API)
- Compiled video (via FFmpeg)
- Saves results to the platform for team review
App Store Publishing
edsger app-store <product-id>
Generates professional App Store and Play Store assets including screenshots with device frames and listing content.
# Generate both screenshots and listings for all stores
edsger app-store abc123-product-uuid
# Screenshots only
edsger app-store abc123-product-uuid --screenshots-only
# Listings only (descriptions, keywords, release notes)
edsger app-store abc123-product-uuid --listings-only
# Target a specific store
edsger app-store abc123-product-uuid --store apple
edsger app-store abc123-product-uuid --store google
# Specify locale for multi-language support
edsger app-store abc123-product-uuid --locale ja-JP
edsger app-store abc123-product-uuid --locale de-DEOptions:
| Flag | Default | Description |
|---|---|---|
--screenshots-only | false | Only generate screenshots, skip listings |
--listings-only | false | Only generate listing content, skip screenshots |
--store <type> | all | Target store: apple, google, or all |
--locale <locale> | en-US | Target locale (e.g., ja-JP, de-DE, fr-FR) |
--verbose | false | Enable detailed logging |
What it generates:
- Screenshots — Professional product screenshots with device framing (iPhone, iPad, Android phone/tablet), optimized for each store's size requirements
- Listings — App name, subtitle, description, keywords, promotional text, release notes, and category suggestions tailored to each store's guidelines
Results are uploaded to the Edsger platform where you can review and publish them.
Log Analysis
edsger analyze-logs <product-id>
Analyzes user activity logs and creates structured feedback for product improvements.
edsger analyze-logs abc123-product-uuid
edsger analyze-logs abc123-product-uuid --verboseHow it works:
- Fetches pending user activity logs from the platform (sessions inactive for >1 hour)
- Groups logs by user session
- Uses AI to analyze patterns, identify pain points, and detect issues
- Creates structured feedback records on the platform
- Feedback can then be linked to features for AI to act on
Task Watching
edsger --watch-tasks <product-id>
Monitors and executes pending tasks assigned to AI for a specific product.
edsger --watch-tasks abc123-product-uuidHow it works:
- Polls for pending AI tasks every 15 seconds
- When a task is found, spawns a child process to execute it
- Tasks can be created manually in the platform or auto-created from approval rejections
- Supports graceful shutdown with
Ctrl+C
Global Options
These options can be used with any command:
edsger --verbose # Enable detailed logging output
edsger --help # Show help and available commands
edsger --version # Show the installed CLI version
edsger -c ./config.json # Use a specific config file pathCLI Overview
Edsger CLI is an AI agent that automates the full software development lifecycle — from requirements analysis through code implementation, testing, and pull requests — while keeping your team in control.
Configuration
Configure the Edsger CLI — file patterns for code review, workflow concurrency, polling intervals, retry behavior, timeouts, and environment variables.