Local AI coding agent for desktop, terminal, editor, and CI workflows.
StemCode helps you understand a repository, plan a change, edit files, run validation, review diffs, and automate pull request feedback without giving up local control.
StemCode is built for practical engineering work. It runs against a real local repository, uses real shells and tools, keeps workspace memory in versionable files, and asks for approval when an action should stay under human control.
Use it when you want one agent experience across:
- interactive implementation in a terminal
- desktop chat with activity, controls, and undo/redo
- VS Code and Visual Studio editor workflows
- ACP-compatible editor integrations
- CI review automation for pull requests and merge requests
- Why StemCode
- What You Can Do
- Choose Your Surface
- Get Started
- Quick Start
- Providers
- Built For Control
- Benchmarks
- Telemetry
- Documentation
- Contributing
- Support
- License
- Works inside a real repository instead of a detached chat sandbox.
- Keeps the human in control with approval prompts, permissions, and profiles.
- Reuses the same agent across desktop, CLI, IDE, and CI workflows.
- Stores reusable commands and team memory in
.stemcode/files you can review and commit. - Supports both subscription-style sign-in and API-key or local-model setups.
- Understand unfamiliar code with repository-aware search, file inspection, and focused summaries.
- Use built-in LSP-powered code intelligence for symbols, definitions, references, diagnostics, and rename previews.
- Turn feature requests and bug reports into concrete implementation plans.
- Edit files, run checks, and iterate on a change without leaving your working tree.
- Make surgical tracked edits with whole-file writes, patch application, line-based insertion, and single-file search/replace.
- Review local diffs, files, pull requests, and merge requests with a findings-first workflow.
- Switch between implementation, planning, review, exploration, and delegated work profiles.
- Save repeatable prompts as slash commands in
.stemcode/commands. - Keep long-lived project knowledge in
.stemcode/memoryinstead of hidden agent state.
| Surface | Best for |
|---|---|
| Desktop app | Visual workspace with chat, model controls, profile switching, activity output, permission prompts, and undo/redo for tracked edits. |
stemcode CLI |
Keyboard-first work, one-shot prompts, piped input, quick reviews, and automation-friendly output. |
| VS Code extension | Chat, selected-context prompts, file review, diff review, and applying suggestions without leaving the editor. |
| Visual Studio extension | Docked StemCode tool window powered by the local CLI over ACP. |
| CI automation | Running StemCode in GitHub Actions, GitLab CI, and Bitbucket Pipelines to review proposed changes automatically. |
Download the latest desktop build from GitHub Releases, or install the CLI with the method that fits your environment.
Release assets publish SHA256SUMS and GitHub artifact attestations so you can verify both checksums and build provenance.
| Platform | Architecture | Download |
|---|---|---|
| Windows | x64 | Setup .exe |
| Windows | x64 | Portable .zip |
| macOS | arm64 | Download .zip |
| macOS | x64 | Download .zip |
| Linux | x64 | Download .zip |
| Linux | arm64 | Download .zip |
Every installer exposes the same stemcode command and downloads the same self-contained release binary.
Curl:
curl -fsSL https://raw.githubusercontent.com/rizwan3d/StemCode/master/scripts/install.sh | bashWindows PowerShell:
irm https://raw.githubusercontent.com/rizwan3d/StemCode/master/scripts/install.ps1 | iexOn Windows, both scripts install the same stemcode CLI. The Bash installer downloads the win-x64 release, installs stemcode.exe into %LOCALAPPDATA%\Programs\StemCode\bin by default, and adds that directory to your user PATH.
npm install -g stemcode
# or
pnpm add -g stemcode
# or
bun add -g stemcodeThe npm package downloads the matching release binary and verifies it against published SHA256SUMS. If postinstall is skipped or the download fails, the binary is fetched automatically the first time you run stemcode.
Start StemCode:
stemcodeThe release workflow also publishes the StemCode library to NuGet.org.
On first launch, StemCode walks you through provider setup. Choose a subscription account, an API-key provider, an OpenAI-compatible endpoint, or a local provider, then let StemCode discover the models that are available to that setup.
If you already know the provider configuration you want, you can preseed it before first run and skip interactive onboarding.
PowerShell:
$env:STEMCODE_PROVIDER="openrouter"
$env:STEMCODE_MODEL="poolside/laguna-m.1:free"
$env:STEMCODE_THINKING="on"
$env:STEMCODE_API_KEY="PASTE_NEW_ROTATED_KEY_HERE"
stemcode -p "Say hello in one short line"Bash:
export STEMCODE_PROVIDER="openrouter"
export STEMCODE_MODEL="poolside/laguna-m.1:free"
export STEMCODE_THINKING="on"
export STEMCODE_API_KEY="PASTE_NEW_ROTATED_KEY_HERE"
stemcode -p "Say hello in one short line"Common ways to use StemCode:
# Start an interactive session in the current repository
stemcode
# Ask one question and print the result
stemcode "Find risky changes in this branch"
# Review piped input with the review profile
git diff --stat | stemcode --stdin --profile review
# Resume a previous session
stemcode --session <session-guid>Inside a session, a few useful commands are:
| Command | What it does |
|---|---|
/help |
List commands and usage. |
/models |
Pick the active model. |
/profile <name> |
Switch profiles such as implementation, planning, and review. |
/permissions |
Review what runs automatically, asks first, or is denied. |
/autocommit [on|off|status] |
Show or toggle automatic AI git commits for the current workspace. |
/init |
Scaffold workspace-local .stemcode files. |
/undo / /redo |
Roll back or re-apply the most recent tracked edit. |
The interactive terminal also keeps you moving while StemCode works:
- Queue the next prompt or slash command with Enter while a turn is running; queued items run in order as soon as it finishes (F4 removes the newest).
- Press Esc to interrupt the current turn, or Esc again to abandon a stuck turn locally.
- Use Ctrl+A to select all input, and Tab to complete file and directory paths after a
!or!!shell command. - Scrolling up to read history pauses auto-scroll until you return to the bottom.
DeepSeek models get an automatic tool-argument repair pass so malformed tool calls still run. See the documentation for details.
StemCode supports:
- OpenAI
- ChatGPT Plus/Pro sign-in
- Anthropic Claude Pro/Max sign-in
- GitHub Copilot sign-in
- OpenRouter
- Kilo Code
- Cerebras
- Groq
- DeepSeek
- Anthropic
- Google AI Studio
- Ollama
- LM Studio
- Ollama Cloud
- OpenAI-compatible providers
StemCode is designed for useful automation without silent surprises.
- Profiles separate implementation, planning, review, exploration, and delegated work.
- Permission rules control what runs automatically, what asks first, and what is denied.
- Sensitive actions can require approval, including file edits, shell commands, network access, MCP tools, memory writes, and elevated operations.
- Tracked file edits can be undone and redone, including targeted insertions and search/replace operations.
- Automatic AI git commits are enabled by default, happen at session end, skip workspaces with existing staged changes, and stay scoped to files StemCode actually changed.
- Secret redaction is off by default; when enabled, secret-looking values are redacted before logs, memory, audit records, and displayed tool output.
- Your workspace stays local. Only the prompt and selected context needed for a request are sent to the provider you configure.
StemCode includes task-based benchmarks in benchmarks/ so we can measure real coding-agent behavior, not just chat-style answers.
- Benchmark tasks live in
benchmarks/tasks/. - Suites are grouped in
benchmarks/manifest.json. - Results are refreshed in
benchmarks/results/latest.mdandbenchmarks/results/latest.json.
Run the full benchmark set:
python benchmarks/scripts/run_benchmarks.py --all --system --skip-preflightRun the regression-only suite:
python benchmarks/scripts/run_benchmarks.py --suite regression --system --skip-preflightStemCode sends anonymous product analytics to PostHog using built-in US Cloud defaults in code. You can still override Application:Telemetry:* settings, and /disableanalytics writes Application.Telemetry.Enabled=false to .stemcode/agent-profile.json for the current workspace.
Every installer (the curl/PowerShell scripts and the npm/pnpm/bun package) also sends a single anonymous cli installed event recording the install method, release version, OS family, and CI flag. It is best-effort and never blocks or fails an install. Opt out by setting STEMCODE_TELEMETRY_DISABLED=1 (or the cross-tool DO_NOT_TRACK=1) before installing.
Collected:
- StemCode version
- OS family
- app surface such as CLI, Desktop, VS Code, Visual Studio, JetBrains, GitHub Actions, GitLab CI, or Bitbucket Pipelines
- execution environment (
localorci) - CI provider when detected (
github_actions,gitlab_ci,bitbucket_pipelines, or generic CI) - feature names used
- success and failure counts
- token and duration buckets
- daily runs and usage-time buckets
Never collected:
- prompts
- source code
- file paths
- repository names or URLs
- API keys
- terminal output
The technical guide lives in docs/documentation.md. It covers installation details, first-run onboarding, desktop and terminal workflows, tracked edit tools, automatic git commits, VS Code and Visual Studio setup, ACP integration, CI review automation, LSP-powered code intelligence, graph-aware local codebase indexing, providers, permissions, MCP, memory, hooks, troubleshooting, release automation, and source builds.
Contributions are welcome. To work on StemCode from source:
-
Fork and clone the repository.
-
Restore, build, and run the CLI:
dotnet restore StemCode.CrossPlatform.slnx dotnet build StemCode.CrossPlatform.slnx dotnet run --project StemCode.CLI/StemCode.CLI.csproj
-
Run the test suite before opening a pull request:
dotnet test StemCode.Tests/StemCode.Tests.csproj
Open an issue to report bugs or propose features, and keep pull requests focused with a clear description of the change. See docs/documentation.md for full source-build details.
- Browse the documentation for setup, workflows, and troubleshooting.
- Report bugs or request features via GitHub Issues.
- Find the latest builds on the Releases page.
Apache License 2.0. See LICENSE.txt.
