osdy-pi
v0.1.9
Published
Osdy Pi package: themes, header, and custom editor for Pi.
Downloads
1,671
Readme
Osdy Pi
Theme package for Pi with the Osdy terminal style: neon pink/purple colors, a custom ASCII header, and a framed editor experience.
Visit the Osdy landing page: landing-osdy.vercel.app.
What you get
- Dark theme:
osdy-pi-dark, enabled by default when the package starts. - Light theme:
osdy-pi-light, with the same Osdy palette adapted for light terminals. - Simple theme:
osdy-pi-simple, a blue/red/slate console theme for the full Pi interface. - Custom header: two selectable header styles with responsive status metadata:
osdy-theme(default) andclassic. - Custom editor: full-width framed input area with model, thinking, token, cost, and context status.
- Custom working indicator: a dedicated working widget/spinner appears above the text box, outside the editor frame.
- Clean layout: the built-in working row is hidden while Osdy Pi is enabled to avoid duplicated UI.
- Optional audio notifications: configurable
.mp3/.wavfiles forcompletion,error,permission, andquestionevents on macOS and Windows.
Install in Pi
Install the published package from npm:
pi install npm:osdy-piYou can also install it directly from GitHub:
pi install git:github.com/OsdyOrtiz/Osdy-PiThen start Pi normally:
piOsdy Pi enables the osdy-pi-dark theme and custom UI automatically on session_start.
Choose the theme manually
If you only want to switch themes, open Pi settings:
/settingsThen select one of these theme names:
osdy-pi-dark
osdy-pi-light
osdy-pi-simpleYou can also set it in your Pi settings.json:
{
"theme": "osdy-pi-dark"
}Use osdy-pi-light if you prefer the light version, or osdy-pi-simple if you want the blue/red/slate palette across the whole console.
Commands
Osdy Pi includes a small command group:
/osdy-pi enable
/osdy-pi disable
/osdy-pi status
/osdy-pi sound setup
/osdy-pi working-tree on
/osdy-pi working-tree off
/osdy-pi working-tree toggle
/osdy-pi working-tree status
/osdy-pi working-tree position top
/osdy-pi working-tree position bottom
/osdy-pi diff
/osdy-pi osdy-theme
/osdy-pi classic
/osdy-pi-osdy-theme
/osdy-pi-classicenableapplies the dark Osdy theme, custom header, custom editor, and clean layout.disablerestores Pi's built-in header, editor, footer, and working visibility, then switches back to the previous theme ordark.statusshows whether the Osdy Pi UI is currently enabled, including the active style.sound setupopens the guided global sound-setup wizard for audio notifications.working-tree on|off|toggle|statuscontrols the persistent git working-tree summary widget.working-tree position top|bottommoves the summary widget above or below the editor.diffopens a floating centered diff window to inspect the current per-file diff without leaving Pi.osdy-themeis the default OsdyTheme header with pink, cyan, and purple styling, plus the mascot glow on the right edge.classickeeps the previous classic header shape with the shared mascot./osdy-pi-osdy-themeand/osdy-pi-classicare direct aliases.
After changing a local extension, run /reload or restart Pi so the updated commands are registered.
Working tree widget
Osdy Pi can show a persistent git working-tree summary above or below the editor.
Current behavior:
- shows file count,
+/-totals, and staged/unstaged/new counts; - previews the top changed files;
- refreshes automatically when Pi finishes mutating tools such as
edit,write,ast_grep_replace, orbash; - is intentionally scoped to changes observed during Pi-driven work for now.
Use these commands to control it:
/osdy-pi working-tree on
/osdy-pi working-tree off
/osdy-pi working-tree toggle
/osdy-pi working-tree status
/osdy-pi working-tree position top
/osdy-pi working-tree position bottom
/osdy-pi diffThe /osdy-pi diff viewer now opens in the most viable floating-window form for Osdy Pi: a centered floating dialog with a selector step and a patch step.
- select a changed file in the floating window
- open its patch in the same centered floating window
- return with
esc/backspaceor close withq
Controls:
- selector: type to filter,
↑/↓orj/k, thenenteror→ - patch view:
PgUp/PgDn - back:
esc/backspaceor← - close:
q
Audio notifications
Osdy Pi can play your own sound files for these product-level events:
completion: the full orchestrator flow finishes and Pi returns control to input.error: a real tool execution failure occurs during the flow.permission: reserved for future explicit Pi approval hooks, dormant by default today.question: reserved for future explicit Pi question hooks, dormant by default today.
Initial audio playback support is implemented for:
- macOS
- Windows
Unsupported platforms fall back safely without crashing Osdy Pi.
Supported files
Only readable .mp3 and .wav files are accepted.
Configure sounds
The preferred setup path is the guided Osdy Pi wizard:
/osdy-pi sound setupThe wizard:
- walks through
completion,error,permission, andquestion; - lets you keep, replace, clear, or skip each event;
- validates every selected path before save;
- blocks save if any selected file is missing, unreadable, not a regular file, or not
.mp3/.wav; - stores accepted settings globally at
~/.pi/agent/extensions/osdy-pi/audio-notifications.json(or$PI_CODING_AGENT_DIR/extensions/osdy-pi/audio-notifications.jsonwhen that env var is set).
Saved global sound paths apply across restarts and projects that use Osdy Pi.
Startup flags still work
You can still pass sound paths as Pi flags when starting the session:
pi \
--osdy-pi-sound-completion /absolute/path/completion.wav \
--osdy-pi-sound-error /absolute/path/error.mp3 \
--osdy-pi-sound-permission /absolute/path/permission.wav \
--osdy-pi-sound-question /absolute/path/question.wavPrecedence is per event:
- startup flag
- saved global Osdy Pi setting
- unconfigured
Notes:
- Empty or omitted flags mean that event does not override the saved global setting.
- Relative startup-flag paths resolve from the current working directory.
- The setup wizard saves normalized absolute paths for global settings.
~expands to your home directory.- Invalid, unreadable, or unsupported files are skipped at playback time without changing existing UI behavior.
- If a file was valid when saved but later disappears or becomes unreadable, Osdy Pi fails safely and skips playback for that event.
- Audio notifications and sound setup are additive only, they do not change the current header, editor, footer, working indicator, theme, or commands.
Local install
If you cloned this repository and want to test it locally without colliding with an already installed global osdy-pi, use the isolated dev launcher:
npm run pi:devThis command runs pi -e . with PI_CODING_AGENT_DIR=.pi-dev, so it uses a separate local Pi config/package/extensions directory and does not load your global installed osdy-pi package.
You can still launch it manually if needed:
PI_CODING_AGENT_DIR="$PWD/.pi-dev" pi -e .To install it from a local path:
pi install /absolute/path/to/Osdy-Pi
Package contents
themes/osdy-pi-dark.json
themes/osdy-pi-light.json
themes/osdy-pi-simple.json
extensions/osdy-pi.ts
extensions/osdy-pi/extensions/osdy-pi.ts is the package entrypoint. The implementation lives in the modular extensions/osdy-pi/ folder (runtime, UI, metrics, working controller, animation, border, and formatting helpers).
The Pi manifest is declared in package.json through pi.themes and pi.extensions, so Pi can discover the themes and extension after installation.
Development
If you are working on the package locally, you can run:
npm run typecheck
npm run lint
npm run pi:devUninstall or turn off
To temporarily turn off the custom UI inside Pi:
/osdy-pi disableTo remove the package completely, use Pi's package management command for installed packages.
License
MIT
