{"repo":"can1357/oh-my-pi","free":true,"listed":false,"github":"https://github.com/can1357/oh-my-pi","clone":"git clone https://github.com/can1357/oh-my-pi.git","description":"⌥  AI Coding agent for the terminal — hash-anchored edits, optimized tool harness, LSP, Python, browser, subagents, and more","language":"TypeScript","stars":25207,"topics":["ai-agent","ai-coding-agent","anthropic","bun","claude","cli","coding-assistant","llm","mcp","multi-provider","openai","rust","terminal","tui","typescript"],"license":"MIT","category":"ai_agent","readme_excerpt":"<p align=\"center\">\n  <img src=\"https://github.com/can1357/oh-my-pi/blob/main/assets/hero.png?raw=true\" alt=\"omp\">\n</p>\n\n<p align=\"center\">\n  <strong>A coding agent with the IDE wired in.</strong>\n  <strong><a href=\"https://omp.sh\">omp.sh</a></strong>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/@oh-my-pi/pi-coding-agent\"><img src=\"https://img.shields.io/npm/v/@oh-my-pi/pi-coding-agent?style=flat&colorA=222222&colorB=CB3837\" alt=\"npm version\"></a>\n  <a href=\"https://github.com/can1357/oh-my-pi/blob/main/packages/coding-agent/CHANGELOG.md\"><img src=\"https://img.shields.io/badge/changelog-keep-E05735?style=flat&colorA=222222\" alt=\"Changelog\"></a>\n  <a href=\"https://github.com/can1357/oh-my-pi/actions\"><img src=\"https://img.shields.io/github/actions/workflow/status/can1357/oh-my-pi/ci.yml?style=flat&colorA=222222&colorB=3FB950\" alt=\"CI\"></a>\n  <a href=\"https://github.com/can1357/oh-my-pi/blob/main/LICENSE\"><img src=\"https://img.shields.io/github/license/can1357/oh-my-pi?style=flat&colorA=222222&colorB=58A6FF\" alt=\"License\"></a>\n  <a href=\"https://www.typescriptlang.org\"><img src=\"https://img.shields.io/badge/TypeScript-3178C6?style=flat&colorA=222222&logo=typescript&logoColor=white\" alt=\"TypeScript\"></a>\n  <a href=\"https://www.rust-lang.org\"><img src=\"https://img.shields.io/badge/Rust-DEA584?style=flat&colorA=222222&logo=rust&logoColor=white\" alt=\"Rust\"></a>\n  <a href=\"https://bun.sh\"><img src=\"https://img.shields.io/badge/runtime-Bun-f472b6?style=flat&colorA=222222\" alt=\"Bun\"></a>\n  <a href=\"https://discord.gg/4NMW9cdXZa\"><img src=\"https://img.shields.io/badge/Discord-5865F2?style=flat&colorA=222222&logo=discord&logoColor=white\" alt=\"Discord\"></a>\n</p>\n\n<p align=\"center\">\n  Fork of <a href=\"https://github.com/badlogic/pi-mono\">Pi</a> by <a href=\"https://github.com/mariozechner\">@mariozechner</a> \n</p>\n\nThe most capable agent surface that ships. Continuously tuned by real-world use — complete out of the box, open all the way down.\n\n**60+** providers · **31** built-in tools · **14** lsp ops · **28** dap ops · **~80k** lines of Rust core.\n\n> [!NOTE]\n> Pull requests are **temporarily open to everyone** as a trial. We previously\n> required a vouch before accepting PRs; that requirement is lifted for now\n> while we evaluate how open contributions go. Depending on the results, the\n> vouch system may return.\n\n## Install\n\n**macOS · Linux**\n\n```sh\ncurl -fsSL https://omp.sh/install | sh\n```\n\n> **Alpine / musl:** the prebuilt musl binary links `libstdc++`/`libgcc` dynamically, which stock Alpine does not ship. Install them first: `apk add libstdc++ libgcc`.\n\n**Homebrew**\n\n```sh\nbrew install can1357/tap/omp\n```\n\n**Bun (recommended)**\n\n```sh\nbun install -g @oh-my-pi/pi-coding-agent\n```\n\n**Nix**\n\n```sh\n# Run without installing\nnix run github:can1357/oh-my-pi\n\n# Or install into the active profile\nnix profile install github:can1357/oh-my-pi\n```\n\nFlake 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:\n\n```nix\n{\n  inputs.omp.url = \"github:can1357/oh-my-pi\";\n\n  # In your Home Manager module:\n  imports = [ inputs.omp.homeManagerModules.default ];\n  programs.omp = {\n    enable = true;\n    settings.startup.quiet = true;\n  };\n}\n```\n\n**Windows (PowerShell)**\n\n```powershell\nirm https://omp.sh/install.ps1 | iex\n```\n\n**Pinned versions (mise)**\n\n```sh\nmise use -g github:can1357/oh-my-pi\n```\n\nmacOS · Linux · Windows · bun ≥ 1.3.14\n\n### Shell completions\n\n`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.\n\n```sh\n# zsh — add to ~/.zshrc (or write the output into a file on your $fpath)\neval \"$(omp completions zsh)\"\n\n# bash — add to ~/.bashrc\neval \"$(omp completions bash)\"\n\n# fish\nomp completions fish > ~/.config/fish/completions/omp.fish\n```\n\n## Every tool, _benchmaxxed_.\n\nEdits 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.\n\n| model            | metric       | what                                                                  |\n| ---------------- | ------------ | --------------------------------------------------------------------- |\n| Grok Code Fast 1 | 6.7% → 68.3% | Tenfold lift the moment the edit format stops eating the model alive. |\n| Gemini 3 Flash   | +5 pp        | Over str_replace — beats Google's own best attempt at the format.     |\n| Grok 4 Fast      | −61% tokens  | Output collapses once the retry loop on bad diffs disappears.         |\n| MiniMax          | 2.1×         | Pass rate more than doubles. Same weights, same prompt.               |\n\n- `read` : summarized snippets · ideal defaults · selector hit rate\n- `grep` : fastest in the west\n- `lsp` : everything your IDE knows, the agent knows\n- `prompts` : adjusted relentlessly for each model\n\n[Read the full post ↗](https://blog.can.ac/2026/02/12/the-harness-problem/)\n\n## The Pi _you love_, with **batteries included**.\n\nOriginally built on [Mario Zechner](https://github.com/mariozechner)'s wonderful [Pi](https://github.com/badlogic/pi-mono), omp adds everything you're missing.\n\n### 01 · Code execution w/ tool-calling\n\nMost 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.\n\n![omp TUI: a single eval session with `[1/2] pandas describe` (Python) printing a real DataFrame.describe() table, followed by `[2/2] top scorer` (JavaScript) running a reduce. Footer: 'Both kernels ran in one session.'](https://omp.sh/captures/eval.webp)\n\n### 02 · LSP wired into every write\n\nAsk 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.\n\n![omp TUI: `LSP references` returns five hits across three files for the symbol `formatBytes`, then `LSP rename` applies the change with edits to format.ts/report.ts/cli.ts, then a `Search formatBytes 0 matches` confirmation. Final line: 'Rename complete. Five edits across three files…'.](https://omp.sh/captures/lsp.webp)\n\n_[Read the LSP config docs](docs/lsp-config.md)_\n\n### 03 · Drives a real debugger\n\nA 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.\n\n![omp TUI: a live lldb-dap session against a native binary at /tmp/omp-native/demo. Adapter=lldb-dap, Status=stopped, Frame=xorshift32, Instruction pointer 0x10000055C, Location demo.c:6:10. Debug scopes and Debug variables cards show locals (x = 57351) and the agent confirms the math: x went from 7 → 57351 (= 7 ^ (7<<13)).](https://omp.sh/clips/dap-poster.webp)\n\n_[Watch the capture ↗](https://omp.sh/clips/dap.mp4)_\n\n### 04 · Time-traveling stream rules\n\nYour 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.\n\n![omp TUI: agent reading src.rs and about to write Box::leak when the request aborts (red `Error: Request was aborted`), an amber `⚠ Injecting rule: box-leak` card injects the rule body `Don't reach for Box::leak in production code paths`, and the agent then course-corrects by proposing `Arc<str>` and asking the user to confirm.](https://omp.sh/clips/ttsr-poster.webp)\n\n_[Watch the capture ↗](https://omp.sh/clips/ttsr.mp4)_\n\n### 05 · First-class subagents\n\nSplit a job across workers and get typed results back. task fans out into isolated worktrees, each worker runs its own tool surface, and the final yield is a schema-validated object the parent reads directly. No prose to parse, no merge conflicts between siblings, no orphaned edits.\n\n![omp TUI showing `task` spawning two subagents `ComponentsExports` and `RoutesExports`, the constraints block requiring an IRC DM between peers, the per-subagent status cards with cost and duration, and a final Findings section listing both exports plus an honest 'IRC coordination note' about a one-sided handshake.](https://omp.sh/clips/irc-poster.webp)\n\n_[Watch the capture ↗](https://omp.sh/clips/irc.mp4)_\n\nWatch the fan-out while it runs: `Alt+A` opens [Agent Hub](docs/agent-hub.md), where the roster shows current activity and usage for every subagent. Open one to read its live transcript, type a steering message, revive a parked worker, or kill a stuck one without aborting the parent session.\n\n### 06 · A second model, watching every turn.\n\nPair a reviewer model to the 'advisor' role and it reads every turn the main agent takes, injecting notes inline — a quiet aside, a concern, or a hard blocker. It runs on its own context and its own model, so it catches what the doer rushed past. The main agent sees the note and course-corrects, or tells you why it won't.\n\n![omp TUI: /advisor status shows the advisor running on openai-codex/gpt-5.5; after the main agent scopes a catch to ENOENT instead of swallowing every error, an amber 'Advisor 1 note (concern)' card warns the fix no longer matches the user's literal acceptance criterion.](https://omp.sh/clips/advisor-poster.webp)\n\n_[Watch the capture ↗](https://omp.sh/clips/advisor.mp4)_\n\n##","default_branch":"main","files":6238,"tree":[".bazelignore",".bazelrc",".bazelversion",".cargo/config.toml",".dockerignore",".fallowrc.jsonc",".gitattributes",".github/ISSUE_TEMPLATE/bug_report.yml",".github/ISSUE_TEMPLATE/config.yml",".github/ISSUE_TEMPLATE/feature_request.yml",".github/ISSUE_TEMPLATE/question.yml",".github/PULL_REQUEST_TEMPLATE.md",".github/SECURITY.md",".github/actionlint.yaml",".github/actions/bazel-cache/action.yml",".github/actions/bazel-natives/action.yml",".github/actions/bun-install/action.yml",".github/actions/native-artifacts/action.yml",".github/actions/setup-system-deps/action.yml",".github/workflows/bazel-cache-warm.yml",".github/workflows/ci.yml",".github/workflows/nix.yml",".gitignore",".omp/commands/cleanup.md",".omp/commands/fix-issues.md",".omp/commands/release.md",".omp/commands/review-prs.md",".omp/commands/triage.md",".omp/skills/semantic-compression/SKILL.md",".omp/skills/system-prompts/SKILL.md",".omp/skills/system-prompts/small-models.md",".omp/skills/tool-prompt-optimization/SKILL.md",".omp/skills/tool-prompt-optimization/scripts/probe-builtin.ts",".omp/skills/tool-prompt-optimization/scripts/probe.ts","AGENTS.md","BUILD.bazel","CONTRIBUTING.md","Cargo.lock","Cargo.toml","Dockerfile","Dockerfile.dockerignore","Dockerfile.robomp","Dockerfile.robomp.dockerignore","LICENSE","MODULE.bazel","MODULE.bazel.lock","README.md","assets/arxiv.webp","assets/ask.webp","assets/banner.html","assets/discovery.webp","assets/hero.png","assets/icon.svg","assets/lspv.webp","assets/models.webp","assets/perplexity.webp","assets/python.webp","assets/review.webp","assets/slash.webp","assets/task.webp","assets/ttsr.webp","bazel/BUILD.bazel","bazel/clippy.bazelrc","bazel/defs.bzl","bazel/patches/BUILD.bazel","bazel/patches/audiopus-sys-libdir.patch","bazel/patches/hermetic_cc_toolchain-isolated-compile-cache.patch","bazel/platforms/BUILD.bazel","bazel/toolchains/BUILD.bazel","bazel/toolchains/msvc/BUILD.bazel","bazel/toolchains/msvc/NOTES.md","bazel/toolchains/msvc/cc.bzl","bazel/toolchains/msvc/llvm.bzl","bazel/toolchains/msvc/sysroot.bzl","bazel/triples/BUILD.bazel","bazel/variants/BUILD.bazel","biome.json","bun.lock","bunfig.toml","crates/pi-ast/BUILD.bazel","crates/pi-ast/Cargo.toml","crates/pi-ast/src/block.rs","crates/pi-ast/src/language/mod.rs","crates/pi-ast/src/language/parsers.rs","crates/pi-ast/src/lib.rs","crates/pi-ast/src/ops.rs","crates/pi-ast/src/summary.rs","crates/pi-builtins/BUILD.bazel","crates/pi-builtins/Cargo.lock","crates/pi-builtins/Cargo.toml","crates/pi-builtins/LICENSE","crates/pi-builtins/README.md","crates/pi-builtins/src/alias.rs","crates/pi-builtins/src/b2sum.rs","crates/pi-builtins/src/base32.rs","crates/pi-builtins/src/base64.rs","crates/pi-builtins/src/basename.rs","crates/pi-builtins/src/bg.rs","crates/pi-builtins/src/bind.rs","crates/pi-builtins/src/break_.rs","crates/pi-builtins/src/builder.rs","crates/pi-builtins/src/builtin_.rs","crates/pi-builtins/src/caller.rs","crates/pi-builtins/src/cat.rs","crates/pi-builtins/src/cd.rs","crates/pi-builtins/src/cksum.rs","crates/pi-builtins/src/cmp.rs","crates/pi-builtins/src/colon.rs","crates/pi-builtins/src/combine.rs","crates/pi-builtins/src/comm.rs","crates/pi-builtins/src/command.rs","crates/pi-builtins/src/complete.rs","crates/pi-builtins/src/continue_.rs","crates/pi-builtins/src/cut.rs","crates/pi-builtins/src/date.rs","crates/pi-builtins/src/declare.rs","crates/pi-builtins/src/diff.rs","crates/pi-builtins/src/dirname.rs","crates/pi-builtins/src/dirs.rs","crates/pi-builtins/src/dot.rs","crates/pi-builtins/src/echo.rs","crates/pi-builtins/src/enable.rs","crates/pi-builtins/src/errno.rs","crates/pi-builtins/src/eval.rs","crates/pi-builtins/src/exec.rs","crates/pi-builtins/src/exit.rs","crates/pi-builtins/src/export.rs","crates/pi-builtins/src/factory.rs","crates/pi-builtins/src/false_.rs","crates/pi-builtins/src/fc.rs","crates/pi-builtins/src/fd.rs","crates/pi-builtins/src/fg.rs","crates/pi-builtins/src/find.rs","crates/pi-builtins/src/getopts.rs","crates/pi-builtins/src/grep.rs","crates/pi-builtins/src/hash.rs","crates/pi-builtins/src/head.rs","crates/pi-builtins/src/help.rs","crates/pi-builtins/src/history.rs","crates/pi-builtins/src/host.rs","crates/pi-builtins/src/hostname.rs","crates/pi-builtins/src/ifne.rs","crates/pi-builtins/src/isutf8.rs","crates/pi-builtins/src/jobs.rs","crates/pi-builtins/src/jq-help.txt","crates/pi-builtins/src/jq.rs","crates/pi-builtins/src/kill.rs","crates/pi-builtins/src/let_.rs","crates/pi-builtins/src/lib.rs","crates/pi-builtins/src/ln.rs","crates/pi-builtins/src/ls.rs","crates/pi-builtins/src/mapfile.rs","crates/pi-builtins/src/md5sum.rs","crates/pi-builtins/src/mkdir.rs","crates/pi-builtins/src/mktemp.rs","crates/pi-builtins/src/mv.rs","crates/pi-builtins/src/nohup.rs","crates/pi-builtins/src/nproc.rs","crates/pi-builtins/src/paste.rs","crates/pi-builtins/src/pgrep.rs","crates/pi-builtins/src/pidwait.rs","crates/pi-builtins/src/pkill.rs","crates/pi-builtins/src/popd.rs","crates/pi-builtins/src/printenv.rs","crates/pi-builtins/src/printf.rs","crates/pi-builtins/src/proc_match.rs","crates/pi-builtins/src/proc_snapshot.rs","crates/pi-builtins/src/ps.rs","crates/pi-builtins/src/pushd.rs","crates/pi-builtins/src/pwd.rs","crates/pi-builtins/src/read.rs","crates/pi-builtins/src/readlink.rs","crates/pi-builtins/src/realpath.rs","crates/pi-builtins/src/return_.rs","crates/pi-builtins/src/rg.rs","crates/pi-builtins/src/rm.rs","crates/pi-builtins/src/sed.rs","crates/pi-builtins/src/seq.rs","crates/pi-builtins/src/set.rs","crates/pi-builtins/src/sha1sum.rs","crates/pi-builtins/src/sha224sum.rs","crates/pi-builtins/src/sha256sum.rs","crates/pi-builtins/src/sha384sum.rs","crates/pi-builtins/src/sha512sum.rs","crates/pi-builtins/src/shift.rs","crates/pi-builtins/src/shopt.rs","crates/pi-builtins/src/sleep.rs","crates/pi-builtins/src/sort.rs","crates/pi-builtins/src/sponge.rs","crates/pi-builtins/src/stat.rs","crates/pi-builtins/src/suspend.rs","crates/pi-builtins/src/tac.rs","crates/pi-builtins/src/tail.rs","crates/pi-builtins/src/tee.rs","crates/pi-builtins/src/test.rs","crates/pi-builtins/src/timeout.rs","crates/pi-builtins/src/times.rs","crates/pi-builtins/src/top.rs","crates/pi-builtins/src/touch.rs","crates/pi-builtins/src/tr.rs","crates/pi-builtins/src/trap.rs","crates/pi-builtins/src/true_.rs","crates/pi-builtins/src/truncate.rs","crates/pi-builtins/src/ts.rs","crates/pi-builtins/src/type_.rs","crates/pi-builtins/src/ulimit.rs","crates/pi-builtins/src/umask.rs","crates/pi-builtins/src/unalias.rs","crates/pi-builtins/src/uname.rs","crates/pi-builtins/src/unimp.rs","crates/pi-builtins/src/uniq.rs","crates/pi-builtins/src/unset.rs","crates/pi-builtins/src/wait.rs","crates/pi-builtins/src/wc.rs","crates/pi-builtins/src/which.rs","crates/pi-builtins/src/whoami.rs","crates/pi-builtins/src/xargs.rs","crates/pi-builtins/src/yes.rs","crates/pi-iso/BUILD.bazel","crates/pi-iso/Cargo.toml","crates/pi-iso/src/apfs.rs","crates/pi-iso/src/btrfs.rs","crates/pi-iso/src/diff.rs","crates/pi-iso/src/lib.rs","crates/pi-iso/src/linux_reflink.rs","crates/pi-iso/src/overlayfs.rs","crates/pi-iso/src/projfs.rs","crates/pi-iso/src/rcopy.rs","crates/pi-iso/src/windows_block_clone.rs","crates/pi-iso/src/zfs.rs","crates/pi-natives/BUILD.bazel","crates/pi-natives/Cargo.toml","crates/pi-natives/build.rs","crates/pi-natives/src/appearance.rs","crates/pi-natives/src/ast.rs","crates/pi-natives/src/audio.rs","crates/pi-natives/src/block.rs","crates/pi-natives/src/clipboard.rs","crates/pi-natives/src/crash_handler.rs","crates/pi-natives/src/desktop/ax.rs","crates/pi-natives/src/desktop/backend.rs","crates/pi-natives/src/desktop/error.rs","crates/pi-natives/src/desktop/frame.rs","crates/pi-natives/src/desktop/keys.rs","crates/pi-natives/src/desktop/linux/ax.rs","crates/pi-natives/src/desktop/linux/mod.rs","crates/pi-natives/src/desktop/linux/wayland/capture.rs","crates/pi-natives/src/desktop/linux/wayland/libei.rs","crates/pi-natives/src/desktop/linux/wayland/mod.rs","crates/pi-natives/src/desktop/linux/wayland/portal.rs","crates/pi-natives/src/desktop/linux/x11/capture.rs","crates/pi-natives/src/desktop/linux/x11/input.rs","crates/pi-natives/src/desktop/linux/x11/mod.rs","crates/pi-natives/src/desktop/macos/ax.rs","crates/pi-natives/src/desktop/macos/capture.rs","crates/pi-natives/src/desktop/macos/input.rs","crates/pi-natives/src/desktop/macos/mod.rs","crates/pi-natives/src/desktop/macos/skylight.rs","crates/pi-natives/src/desktop/mod.rs","crates/pi-natives/src/desktop/types.rs","crates/pi-natives/src/desktop/win32/ax.rs","crates/pi-natives/src/desktop/win32/capture.rs","crates/pi-natives/src/desktop/win32/delivery.rs","crates/pi-natives/src/desktop/win32/input.rs","crates/pi-natives/src/desktop/win32/mod.rs","crates/pi-natives/src/devicecheck.rs","crates/pi-natives/src/diff.rs","crates/pi-natives/src/fd.rs","crates/pi-natives/src/file_lock/linux.rs","crates/pi-natives/src/file_lock/mod.rs","crates/pi-natives/src/file_lock/unix.rs","crates/pi-natives/src/file_lock/windows.rs","crates/pi-natives/src/fonts/5x8.bdf","crates/pi-natives/src/fonts/6x12.bdf","crates/pi-natives/src/fonts/8x13.bdf","crates/pi-natives/src/fonts/Silver.LICENSE","crates/pi-natives/src/fonts/Silver.ttf","crates/pi-natives/src/fonts/unscii-8.hex","crates/pi-natives/src/glob.rs","crates/pi-natives/src/glob_util.rs","crates/pi-natives/src/grep.rs","crates/pi-natives/src/highlight.rs","crates/pi-natives/src/html.rs","crates/pi-natives/src/iofs.rs","crates/pi-natives/src/iso.rs","crates/pi-natives/src/keys.rs","crates/pi-natives/src/lib.rs","crates/pi-natives/src/live.rs","crates/pi-natives/src/pdf.rs","crates/pi-natives/src/power.rs","crates/pi-natives/src/prof.rs","crates/pi-natives/src/ps.rs","crates/pi-natives/src/pty.rs","crates/pi-natives/src/shell.rs","crates/pi-natives/src/sixel.rs","crates/pi-natives/src/snapcompact.rs","crates/pi-natives/src/summary.rs","crates/pi-natives/src/syntaxes/Julia.sublime-syntax","crates/pi-natives/src/syntaxes/Mermaid.sublime-syntax","crates/pi-natives/src/syntaxes/Nix.sublime-syntax","crates/pi-natives/src/task.rs","crates/pi-natives/src/testing.rs","crates/pi-natives/src/text.rs","crates/pi-natives/src/tokens.rs","crates/pi-natives/src/utils.rs","crates/pi-natives/src/vectors.rs","crates/pi-natives/src/workspace.rs","crates/pi-shell/BUILD.bazel","crates/pi-shell/Cargo.toml","crates/pi-shell/NOTICE","crates/pi-shell/build.rs","crates/pi-shell/src/cancel.rs","crates/pi-shell/src/lib.rs","crates/pi-shell/src/minimizer.rs","crates/pi-shell/src/minimizer/config.rs","crates/pi-shell/src/minimizer/defs/ansible-playbook.toml","crates/pi-shell/src/minimizer/defs/ansible.toml","crates/pi-shell/src/minimizer/defs/apt.toml","crates/pi-shell/src/minimizer/defs/biome.toml","crates/pi-shell/src/minimizer/defs/brew-install.toml","crates/pi-shell/src/minimizer/defs/composer-install.toml","crates/pi-shell/src/minimizer/defs/conda.toml","crates/pi-shell/src/minimizer/defs/df.toml","crates/pi-shell/src/minimizer/defs/du.toml","crates/pi-shell/src/minimizer/defs/fail2ban-client.toml","crates/pi-shell/src/minimizer/defs/fail2ban.toml","crates/pi-shell/src/minimizer/defs/gcc.toml","crates/pi-shell/src/minimizer/defs/gcloud.toml","crates/pi-shell/src/minimizer/defs/hadolint.toml","crates/pi-shell/src/minimizer/defs/helm.toml","crates/pi-shell/src/minimizer/defs/iptables.toml","crates/pi-shell/src/minimizer/defs/jira.toml","crates/pi-shell/src/minimizer/defs/jj.toml","crates/pi-shell/src/minimizer/defs/jq.toml","crates/pi-shell/src/minimizer/defs/just.toml","crates/pi-shell/src/minimizer/defs/liquibase.toml","crates/pi-shell/src/minimizer/defs/make.toml","crates/pi-shell/src/minimizer/defs/markdownlint.toml","crates/pi-shell/src/minimizer/defs/mise.toml","crates/pi-shell/src/minimizer/defs/mix-compile.toml","crates/pi-shell/src/minimizer/defs/mix-format.toml","crates/pi-shell/src/minimizer/defs/mix.toml","crates/pi-shell/src/minimizer/defs/npx.toml","crates/pi-shell/src/minimizer/defs/nx.toml","crates/pi-shell/src/minimizer/defs/ollama.toml","crates/pi-shell/src/minimizer/defs/oxlint.toml","crates/pi-shell/src/minimizer/defs/ping.toml","crates/pi-shell/src/minimizer/defs/pio-run.toml","crates/pi-shell/src/minimizer/defs/pio.toml","crates/pi-shell/src/minimizer/defs/pre-commit.toml","crates/pi-shell/src/minimizer/defs/ps.toml","crates/pi-shell/src/minimizer/defs/quarto-render.toml","crates/pi-shell/src/minimizer/defs/quarto.toml","crates/pi-shell/src/minimizer/defs/rails-migrate.toml","crates/pi-shell/src/minimizer/defs/rails-routes.toml","crates/pi-shell/src/minimizer/defs/rsync.toml","crates/pi-shell/src/minimizer/defs/rustc.toml","crates/pi-shell/src/minimizer/defs/shellcheck.toml","crates/pi-shell/src/minimizer/defs/shopify-theme.toml","crates/pi-shell/src/minimizer/defs/skopeo.toml","crates/pi-shell/src/minimizer/defs/sops.toml","crates/pi-shell/src/minimizer/defs/spring-boot.toml","crates/pi-shell/src/minimizer/defs/ssh.toml","crates/pi-shell/src/minimizer/defs/stat.toml","crates/pi-shell/src/minimizer/defs/swift-build.toml","crates/pi-shell/src/minimizer/defs/systemctl-status.toml","crates/pi-shell/src/minimizer/defs/systemctl.toml","crates/pi-shell/src/minimizer/defs/task.toml","crates/pi-shell/src/minimizer/defs/terraform-plan.toml","crates/pi-shell/src/minimizer/defs/terraform.toml","crates/pi-shell/src/minimizer/defs/tofu-fmt.toml","crates/pi-shell/src/minimizer/defs/tofu-init.toml","crates/pi-shell/src/minimizer/defs/tofu-plan.toml","crates/pi-shell/src/minimizer/defs/tofu-validate.toml","crates/pi-shell/src/minimizer/defs/trunk-build.toml","crates/pi-shell/src/minimizer/defs/trunk.toml","crates/pi-shell/src/minimizer/defs/turbo.toml","crates/pi-shell/src/minimizer/defs/ty.toml","crates/pi-shell/src/minimizer/defs/uv-sync.toml","crates/pi-shell/src/minimizer/defs/xcodebuild.toml","crates/pi-shell/src/minimizer/defs/yadm.toml","crates/pi-shell/src/minimizer/defs/yamllint.toml","crates/pi-shell/src/minimizer/detect.rs","crates/pi-shell/src/minimizer/engine.rs","crates/pi-shell/src/minimizer/filters/binary_tools.rs","crates/pi-shell/src/minimizer/filters/bun.rs","crates/pi-shell/src/minimizer/filters/cargo.rs","crates/pi-shell/src/minimizer/filters/cloud.rs","crates/pi-shell/src/minimizer/filters/cpp.rs","crates/pi-shell/src/minimizer/filters/docker.rs","crates/pi-shell/src/minimizer/filters/dotnet.rs","crates/pi-shell/src/minimizer/filters/fixtures/glab/ci-trace.txt","crates/pi-shell/src/minimizer/filters/fixtures/glab/release-list.txt","crates/pi-shell/src/minimizer/filters/fixtures/glab/release-view.txt","crates/pi-shell/src/minimizer/filters/fixtures/jvm/mvn_compile_error_slice_raw.txt","crates/pi-shell/src/minimizer/filters/fixtures/jvm/mvn_install_slice_raw.txt","crates/pi-shell/src/minimizer/filters/fixtures/jvm/mvn_locale_fr_raw.txt","crates/pi-shell/src/minimizer/filters/fixtures/jvm/mvn_no_pom_raw.txt","crates/pi-shell/src/minimizer/filters/fixtures/jvm/mvn_quiet_fail_raw.txt","crates/pi-shell/src/minimizer/filters/fixtures/jvm/mvn_reactor_fail_slice_raw.txt"],"storefront":"/r/can1357","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/can1357/oh-my-pi/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}