<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>Wes Copeland</title>
<subtitle>Full-stack engineer in Cambridge, MA. I run RetroAchievements&apos; web platform, once held the Donkey Kong arcade world record, and write here about AI and software.</subtitle>
<link href="https://wescopeland.dev/"/>
<link rel="self" href="https://wescopeland.dev/feed.xml"/>
<id>https://wescopeland.dev/</id>
<updated>2026-10-12T00:00:00Z</updated>
<author><name>Wes Copeland</name><uri>https://wescopeland.dev/</uri></author>
<entry>
<title>How to Migrate from Claude Code to oh-my-pi (omp)</title>
<link href="https://wescopeland.dev/writing/migrate-from-claude-code-to-omp/"/>
<id>https://wescopeland.dev/writing/migrate-from-claude-code-to-omp/</id>
<published>2026-10-12T00:00:00Z</published>
<updated>2026-10-12T00:00:00Z</updated>
<category term="ai" label="AI"/>
<summary>Everything you need to know to move from running Claude Code inside a terminal to using omp, including what you gain, what you lose, and how to set up permissions.</summary>
<content type="html">&lt;p&gt;I&apos;ve settled on &lt;a href=&quot;https://github.com/can1357/oh-my-pi&quot;&gt;oh-my-pi&lt;/a&gt; (omp) as my daily coding harness. It&apos;s the best terminal coding agent I&apos;ve used, and anyone doing serious engineering work should give it a try.&lt;/p&gt;
&lt;p&gt;If you haven&apos;t heard of it, omp is an open-source coding harness for the terminal, made by &lt;a href=&quot;https://stencil.so/&quot;&gt;Stencil&lt;/a&gt;. It works with basically every AI provider and subscription, including your Claude Max and Codex subs.&lt;/p&gt;
&lt;p&gt;If you&apos;d like a guided migration, paste this into a fresh Claude Code session:&lt;/p&gt;
&lt;figure class=&quot;code&quot;&gt;&lt;figcaption&gt;&lt;span class=&quot;code__lang&quot;&gt;text&lt;/span&gt;&lt;/figcaption&gt;&lt;pre tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;I&apos;m switching from Claude Code to omp (oh-my-pi), an open-source coding agent for the terminal. Its docs are at https://github.com/can1357/oh-my-pi/tree/main/docs. Help me migrate. Don&apos;t change any files until I say so.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;1. Look at my Claude Code setup: ~/.claude/ (CLAUDE.md, settings.json, skills, commands, agents, plugins), the MCP servers in ~/.claude.json, and any CLAUDE.md, CLAUDE.local.md or .claude/ folder in this project.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;2. Skim my recent sessions in ~/.claude/projects/ to learn how I work: the models I pick, the commands and skills I use most, and the things I keep repeating.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;3. Read omp&apos;s docs. Work out what carries over as-is, what needs converting (settings.json hooks, permission rules, .claude/agents/*.md, auto memory), and which omp features I&apos;d get the most out of.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;4. Give me a checklist. Put the next action first. Number the steps, one action per step. Mark the optional ones. End with the single next thing I should do.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;5. Walk me through it one step at a time. Wait for me to finish each step before giving me the next one.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;h2 id=&quot;why-i-switched&quot;&gt;Why I switched&lt;/h2&gt;
&lt;p&gt;I&apos;m a coding agent power user. For months, I bounced between Claude Code, Codex, Cursor CLI, Devin CLI, OpenCode, and Antigravity - whichever one was appropriate for the task at hand. That got old fast, so I went looking for a harness that could do everything I needed all under one roof.&lt;/p&gt;
&lt;p&gt;omp does that. It runs all my subscriptions and models from a single terminal, and it&apos;s genuinely hackable in ways most others aren&apos;t.&lt;/p&gt;
&lt;p&gt;It also has a few things the other harnesses either don&apos;t have or don&apos;t do well: detailed analytics across every provider and model, novel compaction techniques, cache warming for long sessions, load balancing across multiple subscriptions to the same provider, and deep customizability to match your given working preferences.&lt;/p&gt;
&lt;h2 id=&quot;install-and-log-in&quot;&gt;Install and log in&lt;/h2&gt;
&lt;p&gt;Install omp with one command:&lt;/p&gt;
&lt;figure class=&quot;code&quot;&gt;&lt;figcaption&gt;&lt;span class=&quot;code__lang&quot;&gt;bash&lt;/span&gt;&lt;/figcaption&gt;&lt;pre tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#5f6670;--shiki-dark:#8B949E&quot;&gt;# macOS and Linux&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#702C00;--shiki-dark:#FFA657&quot;&gt;curl&lt;/span&gt;&lt;span style=&quot;--shiki-light:#023B95;--shiki-dark:#79C0FF&quot;&gt; -fsSL&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032563;--shiki-dark:#A5D6FF&quot;&gt; https://omp.sh/install&lt;/span&gt;&lt;span style=&quot;--shiki-light:#A0111F;--shiki-dark:#FF7B72&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#702C00;--shiki-dark:#FFA657&quot;&gt; sh&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#5f6670;--shiki-dark:#8B949E&quot;&gt;# Windows (PowerShell)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#702C00;--shiki-dark:#FFA657&quot;&gt;irm&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032563;--shiki-dark:#A5D6FF&quot;&gt; https://omp.sh/install.ps1&lt;/span&gt;&lt;span style=&quot;--shiki-light:#A0111F;--shiki-dark:#FF7B72&quot;&gt; |&lt;/span&gt;&lt;span style=&quot;--shiki-light:#702C00;--shiki-dark:#FFA657&quot;&gt; iex&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Run &lt;code&gt;omp&lt;/code&gt; once it&apos;s installed. It drops you straight into an onboarding wizard where you can log in with your Claude Max subscription.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://wescopeland.dev/writing/migrate-from-claude-code-to-omp/setup-providers.webp&quot; alt=&quot;omp setup, step 1 of 5: a list of providers to sign in to, with Anthropic (Claude Pro/Max) highlighted&quot; width=&quot;1001&quot; height=&quot;600&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;&lt;/p&gt;
&lt;p&gt;omp opens a claude.ai login page in your browser. Approve it and you&apos;re all set. If omp asks for an authorization code, copy it from the browser and paste it into the terminal.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://wescopeland.dev/writing/migrate-from-claude-code-to-omp/setup-anthropic-login.webp&quot; alt=&quot;Signing in to Anthropic: omp shows a claude.ai login link and waits for the authorization code&quot; width=&quot;1035&quot; height=&quot;625&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;&lt;/p&gt;
&lt;div class=&quot;admon admon--warning&quot; role=&quot;note&quot;&gt;&lt;p class=&quot;admon__label&quot;&gt;&lt;svg viewBox=&quot;0 0 9 9&quot; width=&quot;18&quot; height=&quot;18&quot; fill=&quot;currentColor&quot; shape-rendering=&quot;crispEdges&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M4 0h1v1h-1zm-1 1h3v1h-3zm0 1h1v1h-1zm2 0h1v1h-1zm-3 1h2v1h-2zm3 0h2v1h-2zm-3 1h2v1h-2zm3 0h2v1h-2zm-4 1h3v1h-3zm4 0h3v1h-3zm-4 1h7v1h-7zm-1 1h4v1h-4zm5 0h4v1h-4zm-5 1h9v1h-9z&quot;/&gt;&lt;/svg&gt;Warning&lt;/p&gt;
&lt;p&gt;Anthropic&apos;s &lt;a href=&quot;https://code.claude.com/docs/en/legal-and-compliance&quot;&gt;terms&lt;/a&gt; say that Claude subscription logins are meant for Claude Code and Anthropic&apos;s own apps, and omp identifies itself as Claude Code when you log in this way. However, on October 7, 2026, Anthropic provided a &lt;a href=&quot;https://support.claude.com/en/articles/15036540-use-the-claude-agent-sdk-with-your-claude-plan&quot;&gt;significant update&lt;/a&gt; stating &amp;quot;you can still use ... third-party apps with your subscription limits.&amp;quot; If you&apos;re not comfortable with that, log in with an Anthropic API key instead.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;You&apos;ll also pick a default model, a glyph mode, a composer shape, and a theme.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://wescopeland.dev/writing/migrate-from-claude-code-to-omp/setup-default-model.webp&quot; alt=&quot;Setup step 2 of 5: picking a default model from a list of Claude models, with Claude Opus 5.5 highlighted&quot; width=&quot;1133&quot; height=&quot;692&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;&lt;/p&gt;
&lt;p&gt;For your glyph mode, I strongly recommend a Nerd Font. If you don&apos;t have one, &lt;a href=&quot;https://www.nerdfonts.com/font-downloads&quot;&gt;FiraCode Nerd Font&lt;/a&gt; is a good pick, and it makes omp&apos;s UI much easier to read.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://wescopeland.dev/writing/migrate-from-claude-code-to-omp/setup-glyph-mode.webp&quot; alt=&quot;Setup step 3 of 5: glyph mode, with sample icons in Nerd Font, Unicode and ASCII to compare&quot; width=&quot;857&quot; height=&quot;448&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;&lt;/p&gt;
&lt;p&gt;Any composer shape will work fine, but the Claude Code shape will look most familiar.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://wescopeland.dev/writing/migrate-from-claude-code-to-omp/setup-composer-shape.webp&quot; alt=&quot;Setup step 4 of 5: composer shape, with Claude Code highlighted above a live preview of the prompt&quot; width=&quot;1133&quot; height=&quot;692&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot;&gt;&lt;/p&gt;
&lt;p&gt;The last step is picking a theme. I use Titanium, which is the default for dark terminals.&lt;/p&gt;
&lt;h2 id=&quot;permissions&quot;&gt;Permissions&lt;/h2&gt;
&lt;p&gt;Know this before you use omp for real: its default operating mode is YOLO mode (AKA: &lt;code&gt;--dangerously-skip-permissions&lt;/code&gt;). Claude Code&apos;s auto mode doesn&apos;t go that far. In YOLO mode, nothing checks a bash command before omp runs it. omp does know about a handful of catastrophic commands, like &lt;code&gt;rm -rf /&lt;/code&gt; and fork bombs, but YOLO mode skips that check too.&lt;/p&gt;
&lt;p&gt;omp has three approval modes:&lt;/p&gt;
&lt;div class=&quot;table-wrap&quot; tabindex=&quot;0&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Mode&lt;/th&gt;
&lt;th&gt;Runs without asking&lt;/th&gt;
&lt;th&gt;Asks first&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;always-ask&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Reads&lt;/td&gt;
&lt;td&gt;Edits and commands&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;write&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Reads and edits&lt;/td&gt;
&lt;td&gt;Commands&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;yolo&lt;/code&gt; (default)&lt;/td&gt;
&lt;td&gt;Everything&lt;/td&gt;
&lt;td&gt;Nothing&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;If you want Claude Code&apos;s old behavior, where it asked before every edit and command, pick &lt;code&gt;always-ask&lt;/code&gt;. If you&apos;d rather let it edit files freely but still check with you before running commands (similar to Claude Code&apos;s accept-edits mode), go with &lt;code&gt;write&lt;/code&gt;.&lt;/p&gt;
&lt;figure class=&quot;code&quot;&gt;&lt;figcaption&gt;&lt;span class=&quot;code__file&quot;&gt;~/.omp/agent/config.yml&lt;/span&gt;&lt;span class=&quot;code__lang&quot;&gt;yaml&lt;/span&gt;&lt;/figcaption&gt;&lt;pre tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#024C1A;--shiki-dark:#7EE787&quot;&gt;tools&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#024C1A;--shiki-dark:#7EE787&quot;&gt;  approvalMode&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032563;--shiki-dark:#A5D6FF&quot;&gt;always-ask&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;You can also set the mode for a single session by starting omp with &lt;code&gt;omp --approval-mode always-ask&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;No matter which mode you choose, you can block specific commands you never want omp to run. omp checks your &lt;code&gt;bash.patterns&lt;/code&gt; rules in order and uses the first one that matches, and you can use &lt;code&gt;*&lt;/code&gt; as a wildcard:&lt;/p&gt;
&lt;figure class=&quot;code&quot;&gt;&lt;figcaption&gt;&lt;span class=&quot;code__file&quot;&gt;~/.omp/agent/config.yml&lt;/span&gt;&lt;span class=&quot;code__lang&quot;&gt;yaml&lt;/span&gt;&lt;/figcaption&gt;&lt;pre tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#024C1A;--shiki-dark:#7EE787&quot;&gt;tools&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#024C1A;--shiki-dark:#7EE787&quot;&gt;  approval&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#024C1A;--shiki-dark:#7EE787&quot;&gt;    eval&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032563;--shiki-dark:#A5D6FF&quot;&gt;prompt&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#024C1A;--shiki-dark:#7EE787&quot;&gt;bash&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#024C1A;--shiki-dark:#7EE787&quot;&gt;  patterns&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#024C1A;--shiki-dark:#7EE787&quot;&gt;match&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032563;--shiki-dark:#A5D6FF&quot;&gt;&quot;rm -rf *&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#024C1A;--shiki-dark:#7EE787&quot;&gt;      approval&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032563;--shiki-dark:#A5D6FF&quot;&gt;deny&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;    - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#024C1A;--shiki-dark:#7EE787&quot;&gt;match&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032563;--shiki-dark:#A5D6FF&quot;&gt;&quot;git push*&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#024C1A;--shiki-dark:#7EE787&quot;&gt;      approval&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032563;--shiki-dark:#A5D6FF&quot;&gt;prompt&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;A &lt;code&gt;deny&lt;/code&gt; rule applies in every mode, including YOLO mode, and it&apos;ll catch a command even when you chain it with &lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt;, &lt;code&gt;;&lt;/code&gt; or &lt;code&gt;|&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;That &lt;code&gt;eval: prompt&lt;/code&gt; line matters. omp&apos;s eval tool runs Python and JavaScript, and those scripts can start their own shell without going through your &lt;code&gt;bash.patterns&lt;/code&gt; rules. &lt;code&gt;eval: prompt&lt;/code&gt; makes omp ask before it runs one.&lt;/p&gt;
&lt;p&gt;One important caveat: subagents &lt;em&gt;always&lt;/em&gt; run in YOLO mode. Your &lt;code&gt;deny&lt;/code&gt; rules still apply to them, but a &lt;code&gt;prompt&lt;/code&gt; rule is refused, since a subagent can&apos;t stop midstream and ask you for permission to do something.&lt;/p&gt;
&lt;p&gt;If you want something closer to Claude Code&apos;s auto mode, there&apos;s a community plugin called &lt;a href=&quot;https://github.com/casonadams/omp-plugins&quot;&gt;guard&lt;/a&gt; that has a model review each command before it runs:&lt;/p&gt;
&lt;figure class=&quot;code&quot;&gt;&lt;figcaption&gt;&lt;span class=&quot;code__lang&quot;&gt;bash&lt;/span&gt;&lt;/figcaption&gt;&lt;pre tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#702C00;--shiki-dark:#FFA657&quot;&gt;omp&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032563;--shiki-dark:#A5D6FF&quot;&gt; plugin&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032563;--shiki-dark:#A5D6FF&quot;&gt; install&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032563;--shiki-dark:#A5D6FF&quot;&gt; guard@casonadams-plugins&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;h2 id=&quot;what-carries-over&quot;&gt;What carries over&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;omp&lt;/code&gt; reads any &lt;em&gt;CLAUDE.md&lt;/em&gt; and &lt;em&gt;AGENTS.md&lt;/em&gt; file in your project, including the ones in parent folders up to your repo root. It skips &lt;em&gt;CLAUDE.local.md&lt;/em&gt; and &lt;em&gt;AGENTS.override.md&lt;/em&gt; by default, but you can add them to your config:&lt;/p&gt;
&lt;figure class=&quot;code&quot;&gt;&lt;figcaption&gt;&lt;span class=&quot;code__file&quot;&gt;~/.omp/agent/config.yml&lt;/span&gt;&lt;span class=&quot;code__lang&quot;&gt;yaml&lt;/span&gt;&lt;/figcaption&gt;&lt;pre tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#024C1A;--shiki-dark:#7EE787&quot;&gt;contextFiles&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#024C1A;--shiki-dark:#7EE787&quot;&gt;  extra&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032563;--shiki-dark:#A5D6FF&quot;&gt;CLAUDE.local.md&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032563;--shiki-dark:#A5D6FF&quot;&gt;AGENTS.override.md&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;If you&apos;ve been using Claude Code for a while, you&apos;ve probably accumulated quite a bit in your &lt;em&gt;~/.claude&lt;/em&gt; directory. omp ignores it by default, but you can opt in with &lt;code&gt;enabledProviders&lt;/code&gt;:&lt;/p&gt;
&lt;figure class=&quot;code&quot;&gt;&lt;figcaption&gt;&lt;span class=&quot;code__file&quot;&gt;~/.omp/agent/config.yml&lt;/span&gt;&lt;span class=&quot;code__lang&quot;&gt;yaml&lt;/span&gt;&lt;/figcaption&gt;&lt;pre tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#024C1A;--shiki-dark:#7EE787&quot;&gt;enabledProviders&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032563;--shiki-dark:#A5D6FF&quot;&gt;claude&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;This keeps your user-level &lt;em&gt;CLAUDE.md&lt;/em&gt;, skills, slash commands, MCP servers, and Claude plugins working. omp picks up project-level &lt;em&gt;.claude&lt;/em&gt; directories either way. If you also have an &lt;em&gt;~/.omp/agent/AGENTS.md&lt;/em&gt; file, omp uses it instead of your &lt;em&gt;~/.claude/CLAUDE.md&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;The one thing that won&apos;t carry over is Claude Code&apos;s auto-memory. Claude Code stores memory in &lt;em&gt;~/.claude/projects/&amp;lt;project&amp;gt;/memory&lt;/em&gt;, and even though omp has a memory feature, it&apos;s disabled by default. If you have anything in there worth keeping, move it into your &lt;em&gt;CLAUDE.md&lt;/em&gt; (or just ask omp to do it).&lt;/p&gt;
&lt;p&gt;If you have any long-running sessions in Claude Code, you can resume them in omp. Run &lt;code&gt;omp --from-claude&lt;/code&gt; and it will open a menu letting you import the Claude Code session into omp (it&apos;s similar to &lt;code&gt;claude --resume&lt;/code&gt;). You can also do this if you&apos;re already in a session by running &lt;code&gt;/resume @claude&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;A few things won&apos;t work 1:1:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;.claude/agents&lt;/em&gt;: omp loads subagents from &lt;em&gt;.omp/agents&lt;/em&gt; or &lt;em&gt;~/.omp/agent/agents&lt;/em&gt; and the frontmatter is slightly different.&lt;/li&gt;
&lt;li&gt;Hooks from &lt;em&gt;settings.json&lt;/em&gt;: instead of shell commands, omp uses TS/JS files that go in &lt;em&gt;~/.omp/agent/hooks/pre&lt;/em&gt; or &lt;em&gt;~/.omp/agent/hooks/post&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Permission rules: omp has its own system for granular permissions (covered above).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That said, you can ask omp to port all of these for you.&lt;/p&gt;
&lt;h2 id=&quot;make-it-feel-like-claude-code&quot;&gt;Make it feel like Claude Code&lt;/h2&gt;
&lt;p&gt;Most of this is covered in the onboarding wizard, but if you need to do it manually:&lt;/p&gt;
&lt;figure class=&quot;code&quot;&gt;&lt;figcaption&gt;&lt;span class=&quot;code__file&quot;&gt;~/.omp/agent/config.yml&lt;/span&gt;&lt;span class=&quot;code__lang&quot;&gt;yaml&lt;/span&gt;&lt;/figcaption&gt;&lt;pre tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#024C1A;--shiki-dark:#7EE787&quot;&gt;composer&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#024C1A;--shiki-dark:#7EE787&quot;&gt;  shape&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032563;--shiki-dark:#A5D6FF&quot;&gt;claude&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#024C1A;--shiki-dark:#7EE787&quot;&gt;symbolPreset&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032563;--shiki-dark:#A5D6FF&quot;&gt;nerd&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Most keyboard shortcuts should work how you expect, except for these two:&lt;/p&gt;
&lt;div class=&quot;table-wrap&quot; tabindex=&quot;0&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Key&lt;/th&gt;
&lt;th&gt;Claude Code&lt;/th&gt;
&lt;th&gt;omp&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Shift+Tab&lt;/td&gt;
&lt;td&gt;Cycle permission modes&lt;/td&gt;
&lt;td&gt;Cycle thinking level&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Alt+Shift+P&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Toggle plan mode&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;You can find all the keyboard shortcuts, as well as instructions for changing them, in the omp &lt;a href=&quot;https://github.com/can1357/oh-my-pi/blob/main/docs/keybindings.md&quot;&gt;keybindings docs&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;claude-code-to-omp-equivalents&quot;&gt;Claude Code to omp equivalents&lt;/h2&gt;
&lt;p&gt;Most slash commands have the same name (&lt;code&gt;/resume&lt;/code&gt;, &lt;code&gt;/clear&lt;/code&gt;, &lt;code&gt;/compact&lt;/code&gt;, &lt;code&gt;/btw&lt;/code&gt;, &lt;code&gt;/review&lt;/code&gt;, &lt;code&gt;/export&lt;/code&gt;, and so on), but a few are different:&lt;/p&gt;
&lt;div class=&quot;table-wrap&quot; tabindex=&quot;0&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Claude Code&lt;/th&gt;
&lt;th&gt;omp&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/rewind&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/rewind&lt;/code&gt; (conversation only, not files)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/cd&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/move&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/cost&lt;/code&gt;, &lt;code&gt;/usage&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;omp stats&lt;/code&gt;, &lt;code&gt;omp usage&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/plugin&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/marketplace&lt;/code&gt;, &lt;code&gt;/plugins&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--worktree&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/wt&lt;/code&gt;, &lt;code&gt;omp worktree&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Remote Control&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/collab&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Messaging your other sessions&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://github.com/danbarua/agent-bus&quot;&gt;agent-bus&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h2 id=&quot;model-roles&quot;&gt;Model roles&lt;/h2&gt;
&lt;p&gt;Claude Code gives you one model at a time. omp lets you assign different models to different roles. You set the model for each role once, and that&apos;s the model that will be used for that role going forward.&lt;/p&gt;
&lt;p&gt;Here&apos;s what my &lt;code&gt;modelRoles&lt;/code&gt; config looks like at the time of this writing:&lt;/p&gt;
&lt;figure class=&quot;code&quot;&gt;&lt;figcaption&gt;&lt;span class=&quot;code__file&quot;&gt;~/.omp/agent/config.yml&lt;/span&gt;&lt;span class=&quot;code__lang&quot;&gt;yaml&lt;/span&gt;&lt;/figcaption&gt;&lt;pre tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#024C1A;--shiki-dark:#7EE787&quot;&gt;modelRoles&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#024C1A;--shiki-dark:#7EE787&quot;&gt;  default&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032563;--shiki-dark:#A5D6FF&quot;&gt;anthropic/claude-sonnet-5-5:high&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#024C1A;--shiki-dark:#7EE787&quot;&gt;  plan&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032563;--shiki-dark:#A5D6FF&quot;&gt;anthropic/claude-opus-5-5:high&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#024C1A;--shiki-dark:#7EE787&quot;&gt;  task&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032563;--shiki-dark:#A5D6FF&quot;&gt;anthropic/claude-opus-5-5:medium&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#024C1A;--shiki-dark:#7EE787&quot;&gt;  slow&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032563;--shiki-dark:#A5D6FF&quot;&gt;anthropic/claude-opus-5-5:high&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#024C1A;--shiki-dark:#7EE787&quot;&gt;  advisor&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032563;--shiki-dark:#A5D6FF&quot;&gt;anthropic/claude-opus-5-5:medium&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#024C1A;--shiki-dark:#7EE787&quot;&gt;  smol&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032563;--shiki-dark:#A5D6FF&quot;&gt;anthropic/claude-haiku-5-5:medium&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#024C1A;--shiki-dark:#7EE787&quot;&gt;  tiny&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032563;--shiki-dark:#A5D6FF&quot;&gt;anthropic/claude-haiku-5-5:low&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#024C1A;--shiki-dark:#7EE787&quot;&gt;  commit&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032563;--shiki-dark:#A5D6FF&quot;&gt;anthropic/claude-haiku-5-5:low&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#024C1A;--shiki-dark:#7EE787&quot;&gt;  web&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032563;--shiki-dark:#A5D6FF&quot;&gt;openai-codex/gpt-5.6-luna&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#024C1A;--shiki-dark:#7EE787&quot;&gt;  judge&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032563;--shiki-dark:#A5D6FF&quot;&gt;typesafe/jev-latest:auto&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;div class=&quot;table-wrap&quot; tabindex=&quot;0&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;th&gt;What it&apos;s for&lt;/th&gt;
&lt;th&gt;What I use&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;default&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Your main conversation&lt;/td&gt;
&lt;td&gt;Sonnet 5.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;plan&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Plan mode&lt;/td&gt;
&lt;td&gt;Opus 5.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;task&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Subagents&lt;/td&gt;
&lt;td&gt;Opus 5.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;slow&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Deep reasoning&lt;/td&gt;
&lt;td&gt;Opus 5.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;advisor&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Reviews each turn in the background&lt;/td&gt;
&lt;td&gt;Opus 5.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;smol&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Quick, cheap tasks&lt;/td&gt;
&lt;td&gt;Haiku 5.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;tiny&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Session titles&lt;/td&gt;
&lt;td&gt;Haiku 5.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;commit&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Commit messages&lt;/td&gt;
&lt;td&gt;Haiku 5.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;web&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Web search&lt;/td&gt;
&lt;td&gt;GPT-5.6 Luna&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;judge&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Quick classification calls that save tokens in the long run, like ranking results for omp&apos;s &lt;code&gt;find&lt;/code&gt; search tool&lt;/td&gt;
&lt;td&gt;TypeSafe&apos;s jev&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;The &lt;code&gt;:high&lt;/code&gt;, &lt;code&gt;:medium&lt;/code&gt;, or &lt;code&gt;:low&lt;/code&gt; suffix sets the effort level for that model. You can change it any time from the model picker (Alt+M).&lt;/p&gt;
&lt;p&gt;Notice how I&apos;m not limited to just one provider. I use GPT for web searches (since I have a ChatGPT subscription) and TypeSafe&apos;s model for the judge role as a classifier.&lt;/p&gt;
&lt;p&gt;You can also configure fallback chains per role, so that if one model errors or has a rate limit, omp will try the next.&lt;/p&gt;
&lt;figure class=&quot;code&quot;&gt;&lt;figcaption&gt;&lt;span class=&quot;code__file&quot;&gt;~/.omp/agent/config.yml&lt;/span&gt;&lt;span class=&quot;code__lang&quot;&gt;yaml&lt;/span&gt;&lt;/figcaption&gt;&lt;pre tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#024C1A;--shiki-dark:#7EE787&quot;&gt;retry&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#024C1A;--shiki-dark:#7EE787&quot;&gt;  fallbackChains&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#024C1A;--shiki-dark:#7EE787&quot;&gt;    default&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032563;--shiki-dark:#A5D6FF&quot;&gt;opencode-go/muse-spark-1.3-contributor:low&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#024C1A;--shiki-dark:#7EE787&quot;&gt;    plan&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032563;--shiki-dark:#A5D6FF&quot;&gt;opencode-go/muse-spark-1.3-contributor:medium&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#024C1A;--shiki-dark:#7EE787&quot;&gt;    slow&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032563;--shiki-dark:#A5D6FF&quot;&gt;opencode-go/muse-spark-1.3-contributor:medium&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#024C1A;--shiki-dark:#7EE787&quot;&gt;    web&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032563;--shiki-dark:#A5D6FF&quot;&gt;anthropic/claude-opus-5-5&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032563;--shiki-dark:#A5D6FF&quot;&gt;web/duckduckgo&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;      - &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032563;--shiki-dark:#A5D6FF&quot;&gt;web/startpage&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;h2 id=&quot;what-you-can-do-in-omp-that-you-can-t-in-claude-code&quot;&gt;What you can do in omp that you can&apos;t in Claude Code&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://stencil.so/blog/prewalk&quot;&gt;Prewalk&lt;/a&gt;&lt;/strong&gt;: let an expensive model work until it begins editing files, then immediately hand off to your &lt;code&gt;smol&lt;/code&gt; model to follow the pattern. Stencil found this retains 92-97% of the frontier model&apos;s pass rate at roughly half the cost. Enable it with &lt;code&gt;--prewalk&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://stencil.so/blog/snapcompact&quot;&gt;Snapcompact&lt;/a&gt;&lt;/strong&gt;: instead of summarizing the conversation when the context fills up, omp renders it as images in a pixel font. Models with vision (eg: Claude) can read these almost verbatim, often at 1/3 the token cost. Since it&apos;s done locally, you don&apos;t even need to make a model call for compaction. By default, omp will try to compact with the provider first. If you want to prefer snapcompact, add the following to your config file:&lt;/p&gt;
&lt;figure class=&quot;code&quot;&gt;&lt;figcaption&gt;&lt;span class=&quot;code__file&quot;&gt;~/.omp/agent/config.yml&lt;/span&gt;&lt;span class=&quot;code__lang&quot;&gt;yaml&lt;/span&gt;&lt;/figcaption&gt;&lt;pre tabindex=&quot;0&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#024C1A;--shiki-dark:#7EE787&quot;&gt;compaction&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span style=&quot;--shiki-light:#024C1A;--shiki-dark:#7EE787&quot;&gt;  methodOrder&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;: [&lt;/span&gt;&lt;span style=&quot;--shiki-light:#032563;--shiki-dark:#A5D6FF&quot;&gt;snapcompact&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032563;--shiki-dark:#A5D6FF&quot;&gt;remote&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032563;--shiki-dark:#A5D6FF&quot;&gt;handoff&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032563;--shiki-dark:#A5D6FF&quot;&gt;shake&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;--shiki-light:#032563;--shiki-dark:#A5D6FF&quot;&gt;soft&lt;/span&gt;&lt;span style=&quot;--shiki-light:#0E1116;--shiki-dark:#E6EDF3&quot;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;&lt;strong&gt;Cache warming&lt;/strong&gt;: right before your prompt cache expires, omp will resend your last request with a one-token output limit. This keeps your cache alive through short breaks so your next message doesn&apos;t pay the full token price to rebuild it. omp is smart enough to only do this when the savings of this feature outweighs the cost of the cachebust and refresh, and it stops keeping the cache warm after thirty minutes of inactivity. This functionality is enabled by default.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;/omfg&lt;/code&gt;&lt;/strong&gt;: did the agent just do something you &lt;em&gt;never&lt;/em&gt; want to see again? Run &lt;code&gt;/omfg&lt;/code&gt; and omp will create a rule based on the conversation that will interrupt and re-attempt the next time the agent tries the same thing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;omp stats&lt;/code&gt;&lt;/strong&gt;: a local dashboard to view usage, cost, and analytics across all providers and models.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Use multiple accounts for a given provider.&lt;/strong&gt; Log in with two or more Claude Max (or other) accounts, and omp will automatically load balance usage between them.&lt;/p&gt;
&lt;h2 id=&quot;what-you-can-do-in-claude-code-that-you-can-t-yet-in-omp&quot;&gt;What you can do in Claude Code that you can&apos;t (yet) in omp&lt;/h2&gt;
&lt;p&gt;Most of what&apos;s missing is proprietary cloud functionality that runs on Anthropic&apos;s servers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cloud session management, routines, Projects, the Claude mobile app. You can open a session in your browser with &lt;code&gt;/collab&lt;/code&gt;, but you won&apos;t get push notifications.&lt;/li&gt;
&lt;li&gt;The code review GitHub app, &lt;code&gt;/ultrareview&lt;/code&gt;, and &lt;code&gt;@claude&lt;/code&gt; in GitHub/GitLab/Slack. omp has &lt;code&gt;/review&lt;/code&gt;, which runs locally.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Some local features Claude Code has that omp doesn&apos;t yet:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/rewind&lt;/code&gt;: in omp, this will only rewind the conversation, not the files. You should probably commit often if you frequently use this feature.&lt;/li&gt;
&lt;li&gt;Sandboxing for bash commands: in omp you can set approval rules to control what it&apos;s allowed to run, but it will have full access to your machine for anything it&apos;s allowed to run.&lt;/li&gt;
&lt;li&gt;Artifacts, scheduling. There are community projects like &lt;a href=&quot;https://github.com/coda0HQ/open-artifacts&quot;&gt;open-artifacts&lt;/a&gt;. If your editor supports ACP, you can use &lt;code&gt;omp acp&lt;/code&gt;. There are also community plugins for VS Code and JetBrains.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If there&apos;s a feature you need that omp doesn&apos;t have, one power move to try is to just ask omp itself to build a plugin for it. I&apos;ve had pretty decent success with this.&lt;/p&gt;
&lt;h2 id=&quot;should-you-use-omp-instead-of-claude-code&quot;&gt;Should you use omp instead of Claude Code?&lt;/h2&gt;
&lt;p&gt;I don&apos;t have a benchmark. I just really enjoy using it.&lt;/p&gt;
&lt;p&gt;If you&apos;re a terminal user with subscriptions to multiple AI providers, or if you like tinkering with your tooling, I think you&apos;ll enjoy omp. If you&apos;re heavily relying on Claude Code&apos;s cloud features, or you&apos;re uncomfortable with how omp logs in to your Claude subscription, then you might want to hold off.&lt;/p&gt;
&lt;p&gt;Either way, it&apos;s quick to try. Paste the prompt at the top of this post into Claude Code and see what it says.&lt;/p&gt;
</content>
</entry>
</feed>
