Bring any AI model into your terminal (Software Rendered)
warp-cpu is a fork of OpenWarp (a community fork of Warp) optimized to use CPU software rendering (llvmpipe) by default. This saves precious VRAM on Linux machines, especially those with dedicated GPUs where VRAM is needed for other tasks like AI models or gaming.
Keep the full Warp terminal experience — blocks, workflows, keymaps — while plugging in
any OpenAI-compatible provider, customizing system prompts with minijinja templates,
and keeping every credential local.
简体中文 · Docs · Upstream Warp
⚠️ Early development. No official release yet. Not affiliated with Warp, Inc.
To force Warp to use CPU rendering on Linux instead of crashing or consuming your GPU, always run it with these environment variables:
env __EGL_VENDOR_LIBRARY_FILENAMES=/usr/share/glvnd/egl_vendor.d/50_mesa.json LIBGL_ALWAYS_SOFTWARE=1 WGPU_BACKEND=gl warp-terminal-oss(Note: These variables are automatically injected if you use the .desktop shortcut included in this repo).
The official Warp client routes AI through Warp's cloud agent service. OpenWarp opens that layer entirely:
| Upstream Warp | OpenWarp | |
|---|---|---|
| AI provider | Warp gateway | Any OpenAI-compatible endpoint |
| Credentials | Cloud account | Local config file, never leaves device |
| System prompt | Server-assembled, opaque | minijinja templates, fully editable |
| UI language | English | Native English + Simplified Chinese, extensible |
| Cloud Agent / Computer Use | On by default | Off by default, fully local |
| Blocks / Workflows / Keymaps | ✓ | ✓ Fully preserved |
| License | AGPL-3.0 / MIT dual | Same as upstream |
01 · Plug in any provider Paste a Base URL and API key in settings — any OpenAI Chat Completions–compatible endpoint works out of the box. Credentials are stored locally only.
02 · Author dynamic prompts A minijinja-powered template engine renders the system prompt in real time based on the current working directory, language, and role.
03 · Use it in the terminal immediately Switch models, conversations, and command suggestions with one click — the experience is identical to Warp, but every layer is yours.
| Provider | Base URL | Notes |
|---|---|---|
| OpenAI | https://api.openai.com/v1 |
Native protocol |
| Anthropic | via genai native | Claude 4.x family |
| DeepSeek | https://api.deepseek.com/v1 |
thinking + tool calling |
| Gemini | via genai native | Google AI Studio |
| Ollama | http://localhost:11434/v1 |
Local inference, no key |
| OpenRouter | https://openrouter.ai/api/v1 |
Aggregator gateway |
| Qwen / Groq / Together / LM Studio / any OpenAI-compatible proxy | — | Configure and go |
- BYOP custom providers — five native protocols (OpenAI / OpenAIResp / Anthropic / Gemini / Ollama / DeepSeek) explicitly bound on top of genai 0.6
- SSE streaming — incremental block rendering identical to Warp's first-party path
- 18 local tools — shell / read / edit / search / mcp / drive docs / skills / ask, all executed locally
- System prompt templates — eight model-family prompts ported from opencode (default / anthropic / gpt / beast / gemini / kimi / codex / trinity)
- Software rendering enabled — Prioritizes
llvmpipeCPU rendering to conserve VRAM on Linux setups. - models.dev integration — searchable Providers subpage with thousands of preloaded model entries
- Privacy first — Cloud Agent / Computer Use / Referral disabled by default; no telemetry
- Warp experience preserved — continuously merged with upstream; Blocks, Workflows, AI commands, Keymaps and themes all kept
- Localized UI — Simplified Chinese + English, community-extensible
git clone https://github.com/zerx-lab/openwarp
cd openwarp
./script/bootstrap # platform-specific deps
./script/run # build & run
./script/presubmit # fmt / clippy / testsIf you prefer raw cargo, always target the OSS binary explicitly:
cargo build --release --bin warp-oss
cargo run --release --bin warp-oss
⚠️ Do not runcargo build --release/cargo run --release --bin {warp,stable,dev,preview}without a filter — those entry points (local.rs/stable.rs/dev.rs/preview.rs) load their channel config through Warp's privatewarp-channel-configbinary, which lives in a closed-source repo. Compilation succeeds, but the resulting executables panic at startup asking you to run./script/install_channel_config. That script clones an SSH repo only Warp employees can access. OpenWarp users only need thewarp-ossbinary.
See WARP.md for the full engineering guide (style, testing, platform notes).
Same as upstream Warp:
zerx-lab/warp keeps two long-lived branches:
| Branch | Tracks | Purpose |
|---|---|---|
main |
zerx-lab/warp:main (default) |
OpenWarp's main development line. All PRs target this. |
warp-upstream |
warpdotdev/warp:master |
Pristine mirror of upstream Warp, used to pull in new commits. No fork-local changes. |
For contributors
Open PRs against main. Never against warp-upstream.
For maintainers (write access)
main in the GitHub web UI. It would merge the entire upstream history straight into OpenWarp's main line and trigger large-scale conflicts. Pull upstream changes through the mirror branch instead:
# one-time setup
git remote add upstream https://github.com/warpdotdev/warp.git
# refresh the mirror
git checkout warp-upstream
git pull # fast-forwards from upstream/master
git push origin warp-upstream
# bring selected commits into main
git checkout main
git cherry-pick <sha> # or merge warp-upstream when a full sync makes senseCommunity contributions welcome. See CONTRIBUTING.md for the full flow.
Before filing, please search existing issues. Security vulnerabilities should be reported privately per CONTRIBUTING.md#reporting-security-issues.
OpenWarp stands on the shoulders of the Warp team and many open-source projects:
Warp · genai · opencode · models.dev · Tokio · NuShell · Alacritty · Hyper · minijinja