Chisle
The coding-agent plugin that bills 52% of a bare model across 20 live tasks. Terse persona + tool-output compressor + context diet.
翻訳待ち
⌥ Coding agent with the IDE wired in. Built by Stencil Labs.
翻訳待ち
Loading the full README.
Read the full README ↗The most capable agent surface that ships. Continuously tuned by real-world use — complete out of the box, open all the way down.
60+ providers · 31 built-in tools · 14 lsp ops · 28 dap ops · ~80k lines of Rust core.
[!NOTE] Pull requests are temporarily open to everyone as a trial. We previously required a vouch before accepting PRs; that requirement is lifted for now while we evaluate how open contributions go. Depending on the results, the vouch system may return.
macOS · Linux
curl -fsSL https://omp.sh/install | sh
The install scripts fetch the prebuilt binary from build.stencil.so and check its SHA-256 before installing it; pass --source (PowerShell: -Source) to install the package with bun instead. Pin a release with curl -fsSL https://omp.sh/install | sh -s -- --binary --ref v<version> (PowerShell: -Binary -Ref v<version>).
Alpine / musl: the prebuilt musl binary links
libstdc++/libgccdynamically, which stock Alpine does not ship. Install them first:apk add libstdc++ libgcc.
Homebrew
brew install can1357/tap/omp
Bun (recommended)
bun install -g @oh-my-pi/pi-coding-agent
Nix
# Run without installing
nix run github:can1357/oh-my-pi
# Or install into the active profile (Nix < 2.30: `nix profile install`)
nix profile add github:can1357/oh-my-pi
Flake consumers can use packages.<system>.omp, overlays.default, nixosModules.default, or homeManagerModules.default. A Home Manager configuration can install OMP and own its settings declaratively:
{
inputs.omp.url = "github:can1357/oh-my-pi";
# In your Home Manager module:
imports = [ inputs.omp.homeManagerModules.default ];
programs.omp = {
enable = true;
settings.startup.quiet = true;
};
}
Windows (PowerShell)
irm https://omp.sh/install.ps1 | iex
Pinned versions (mise)
mise use -g github:can1357/oh-my-pi
macOS · Linux · Windows · bun ≥ 1.4.4
omp generates its own completion scripts for bash, zsh, and fish from the live command/flag metadata, so they never drift from the actual CLI. Subcommands, flags, and enum values complete statically; model names (--model, --smol, --slow, --plan) resolve against the bundled model catalog and --resume against your on-disk sessions.
# zsh — add to ~/.zshrc (or write the output into a file on your $fpath)
eval "$(omp completions zsh)"
# bash — add to ~/.bashrc
eval "$(omp completions bash)"
# fish
omp completions fish > ~/.config/fish/completions/omp.fish
Edits that land on the first attempt. Reads that summarize files instead of dumping their content. Searches that return instantly. Pick any model — omp will get it right.
| model | metric | what |
|---|---|---|
| Grok Code Fast 1 | 6.7% → 68.3% | Tenfold lift the moment the edit format stops eating the model alive. |
| Gemini 3 Flash | +5 pp | Over str_replace — beats Google's own best attempt at the format. |
| Grok 4 Fast | −61% tokens | Output collapses once the retry loop on bad diffs disappears. |
| MiniMax | 2.1× | Pass rate more than doubles. Same weights, same prompt. |
read : summarized snippets · ideal defaults · selector hit rategrep : fastest in the westlsp : everything your IDE knows, the agent knowsprompts : adjusted relentlessly for each modelOriginally built on Mario Zechner's wonderful Pi, omp adds everything you're missing.
Most harnesses give the agent a Python sandbox and call it done. Ours runs persistent Python and a Bun worker, and either kernel can call back into the agent's own tools — read, search, task — over a loopback bridge. The agent loads a CSV with tool.read from inside Python, charts it from JavaScript, and never leaves the cell.
Ask for a rename and you get a rename. The call goes through workspace/willRenameFiles, so re-exports, barrel files, and aliased imports update before the file moves. Everything your IDE knows, the agent knows.
A C binary segfaults: the agent attaches lldb, steps to the bad pointer, reads the frame. A Go service hangs: it attaches dlv and walks the goroutines. A Python process is wedged: debugpy, pause, inspect, evaluate. Most agents are still sprinkling print statements.
Your rules sit dormant until the model goes off-script. A regex match aborts the stream mid-token, injects the rule as a system reminder, and retries from the same point. You get course-correction without paying context tax on every turn. Injections survive compaction, so the fix sticks.
This is the beginning of the README. Read the rest at the original. Read the full README ↗