Oh My Pi (omp) Getting Started — Installing & Using a Terminal AI Coding Agent
In one sentence: omp is a "terminal-first" open-source AI coding agent. It needs no IDE and turns your terminal into a full-featured coding workbench — 32 benchmark-tuned tools, complete LSP and debuggers, and cross-session memory, all built in.
TL;DR: omp (Oh My Pi) is an open-source AI coding agent that runs in your terminal, forked from Mario Zechner's Pi by Can Bölük and heavily extended. Get started in 3 minutes:
curl -fsSL https://omp.sh/install | shto install →/loginto sign in (OAuth or API key) → start chatting. Compared to Claude Code, it uses Hashline hashed edits that make fewer errors, has full built-in LSP/DAP, and every tool is benchmark-tuned.
📚 Table of Contents (click to jump)
- What Is omp?
- Installation
- First-Time Setup: Sign In to a Model Provider
- Pros and Cons
- FAQ
- About the Author
What Is omp?
omp is the command-line shorthand for Oh My Pi, a terminal-first AI coding agent. It doesn't depend on any IDE — it runs as a full-featured TUI in your terminal, with:
- Full LSP: 14 language-server operations, including rename, go-to-definition, and code actions
- DAP debugger: supports lldb, dlv, and debugpy
- Python / JavaScript dual execution kernels: the kernels can call Agent tools into each other
- Parallel sub-agents: isolated workspaces, typed return values
- Cross-session memory: the Hindsight memory bank (project-scoped)
- 32 benchmark-tuned tools: editing, search, and LSP integration each aim to be among the best in class
Oh My Pi's core philosophy: tools shouldn't just "hook in" — they should be honed to the extreme, with every tool tuned against benchmarks so that edit hit-rate, search speed, and LSP integration each aim to be best in class.
- GitHub: https://github.com/can1357/oh-my-pi
- Website: omp.sh

How It Differs from Other AI Coding Tools
| Aspect | Claude Code / similar tools | omp |
|---|---|---|
| Edit format | str_replace (error-prone) | Hashline (content-hash anchors, whitespace-tolerant) |
| File reading | Full-text dump | Structural summary + on-demand expansion |
| LSP | None or limited | Full 14 LSP operations (rename, go-to, code actions) |
| Debugger | None | Full DAP: lldb, dlv, debugpy |
| Sub-agents | None or limited | Parallel sub-agents, isolated workspaces, typed returns |
| Search | Shell-invoked ripgrep | In-process ripgrep, no fork/exec |
| Behavior correction | Prompt-driven | Flow rules: regex hit → mid-token injection → retry |
| Cross-session memory | None | Hindsight memory bank (project-scoped) |
| Code execution | Python sandbox | Persistent Python + Bun dual kernels, mutual Agent-tool calling |
| Tech stack | Pure JS/Python | ~55,000-line Rust core + TypeScript |
Installation
Method 1: One-liner Script (Linux)

$ curl -fsSL https://omp.sh/install | shThe install script auto-detects whether Bun is available: if Bun (≥ 1.3.14) is present it installs via Bun first, otherwise it downloads a pre-built binary.
Method 2: Homebrew (macOS / Linux)
$ brew install can1357/tap/ompMethod 3: Bun (recommended for the latest version)
$ bun install -g @oh-my-pi/pi-coding-agentMethod 4: Windows (PowerShell)
$ irm https://omp.sh/install.ps1 | iexWindows runs natively — no WSL needed.
Pin a Version (mise)
$ mise use -g github:can1357/oh-my-piVerify the Installation
If you run omp right after installing, you may get a "command not found" error like this:

That's because the install directory hasn't been added to PATH yet, so the system can't find omp. The fix is simple — add it to the environment for the current session:
export PATH="/root/.local/bin:$PATH"⚠️ Note: don't leave a space after the colon
:. To make it permanent, append this line to~/.bashrc(or~/.zshrc).
Then verify the version:
$ omp --version
First-Time Setup: Sign In to a Model Provider
The first time you run omp, you can choose between sign in / web_search (this article uses the sign in option).

First, Distinguish Two Concepts: Sign in and web_search
- Sign in (/login): authenticates to your model backend (Anthropic / OpenAI / Gemini…). It decides "which LLM answers your questions."
- web_search (built-in tool): the web-retrieval tool the agent calls during a conversation. It decides "how to get real-time information from the web."
The only overlap: some search providers reuse the same OAuth login state (for example, after signing in to Anthropic you unlock both the Claude models and Anthropic's web search).
To remember it simply: /login manages "which model," web_search manages "how to look up live information." The detailed differences are in this table:
| Dimension | Sign in (/login) | Web search (web_search tool) |
|---|---|---|
| What it is | An authentication flow, not a tool | A built-in tool the agent calls at runtime |
| Problem it solves | Makes model provider / model-id optional | Lets the agent look up live info beyond its knowledge cutoff |
| Target | Model providers: anthropic, openai, google, groq, ollama… | Search providers (23 total): Perplexity, Brave, Tavily, DuckDuckGo… |
| Credential form | OAuth (browser authorization) or API key | Each search provider's own API key / OAuth, or none |
| Whether login is needed | Yes (except keyless local engines like ollama / llama.cpp / lm-studio) | Not necessarily: some are login-free (DuckDuckGo, Startpage, Google, Ecosia, Mojeek), others need credentials |
| Where credentials live | ~/.omp/agent/agent.db (or an auth broker) | Some reuse agent.db's OAuth, some use environment variables |
| Scope | Provider-level isolation: logging into anthropic ≠ logging into openai | Automatic fallback chain, trying one after another until one succeeds |
| Where to configure | /login <provider>, models.yml, disabledProviders | providers.webSearchOrder / webSearchExclude / webSearchTimeoutSeconds |
| Effect of logging in once | Only unlocks that provider's models | Some providers additionally unlock their search capability after login |
Method 1: One-Click OAuth Sign-In (No API Key Needed)
omp lets you sign in to several providers via OAuth — the simplest way:
/login # opens the interactive provider pickerProviders with OAuth support include: Anthropic, OpenAI Codex, Google Antigravity (Gemini), Perplexity, Cursor, GitHub Copilot, GitLab Duo, and more.
Method 2: API Key (Direct Provider Connection)
Configure it directly inside omp:

/model # opens the model picker, where you can configure a keyChoose your provider:

Paste the matching API key:

Once configured, you can start a simple conversation with omp directly.
Hands-On: Have omp Build a Self-Introduction HTML Page
Next, let's do a real little task. Type directly into the conversation:
Help me make a simple HTML page that introduces omp.

omp starts generating:

And here's the final result:

Pros and Cons
omp's strengths
- Tools honed to the extreme: 32 benchmark-tuned tools, best-in-class edit hit-rate and search speed
- Full built-in LSP (14 operations) and DAP debuggers (lldb / dlv / debugpy)
- Built-in cross-session memory (Hindsight) and parallel sub-agents — no need to re-explain context on long projects
- Multiple install methods (script / Homebrew / Bun / mise) and native Windows support
Limitations / things to note
- You provide the model yourself: use
/loginOAuth or/modelto configure an API key, and usage is billed by the model provider - Terminal-first: users used to GUI / IDE workflows face a small learning curve
- Some web-search providers need extra credentials, otherwise it falls back to login-free search engines
FAQ
What's the difference between omp and Claude Code?
The core difference is in the tool layer: omp edits files with Hashline (content-hash anchors), which tolerates whitespace differences; it has full built-in LSP and DAP debuggers; and all 32 tools are benchmark-tuned. See the comparison table above.
What should I do if it says "omp: command not found" after installing?
The install directory isn't on PATH yet. Temporarily run export PATH="/root/.local/bin:$PATH"; to make it permanent, append it to ~/.bashrc or ~/.zshrc.
Does omp need an API key?
Yes. We recommend /login for one-click OAuth sign-in (Anthropic, OpenAI, Gemini, Perplexity, Cursor, GitHub Copilot, and more), or use /model to paste an API key directly.
Does omp work on Windows?
Yes. Run irm https://omp.sh/install.ps1 | iex in PowerShell. It runs natively — no WSL needed.
What's the relationship between omp and Pi?
omp is forked from Mario Zechner's Pi by Can Bölük, heavily extended on a minimal base: fuller LSP/DAP, Hashline editing, dual execution kernels, and Hindsight cross-session memory.
