
🧱 Tech Stack
- Bun: Runtime and script runner for the CLI, installer, and test suite.
- TypeScript: Static typing for the CLI, extensions, and dashboard.
- React: UI library for the dashboard app.
- Vite: Dev server and build tool for the dashboard bundle.
- Tailwind: Utility-first styling for the dashboard and extension UI.
- shadcn/ui: Component primitives and design tokens for the dashboard.
- Oxlint: Fast linter across the CLI, extensions, and dashboard.
🚀 Getting Started
Install the CLI and pick a host in one pass:
curl -fsSL https://github.com/KurutoDenzeru/tersio/releases/latest/download/install.sh | sh
Then open the menu, or install non-interactively:
tersio # menu — picks Oh My Pi, pi, or OpenCode
tersio install --host pi # pi, non-interactive
tersio install --host omp # Oh My Pi, non-interactive
tersio install --host opencode # OpenCode, non-interactive
Each host can also install the package itself:
omp plugin install @krtclcdy/tersio
pi install npm:@krtclcdy/tersio
opencode plugin add @krtclcdy/tersio
Pick one install method per host. Using both registers every command twice.
📦 Build for Production
bun install
bun run build
🗂️ Configuration
The CLI lives under cli/ and the extensions under extensions/. Key areas:
cli/
install.ts # Host install and preset menu flow
doctor.ts # Health checks with optional repair scopes
dashboard.ts # Local dashboard server and export
usage.ts # Ledger-backed usage and savings report
settings.ts # Defaults, currency, and profile handling
update.ts # CLI, extension, and add-on refresh
uninstall.ts # Extension removal with keep-flag options
extensions/
shared/ # Pricing, carbon, usage ledger, status helpers
caveman-session/ # Terse reply style rules
rtk-session/ # Shell output rewriting rules
combo-toggle/ # One-preset mode switching
ai-addons-updater/# Upstream add-on updates
tersio-commands/ # Slash command surface
dashboard/app/
src/components/ # Hero, activity, models, savings, request drawer
src/lib/ # Data shaping, formatting, carbon estimates
Session defaults persist in ~/.tersio/settings.json and usage rows in ~/.tersio/usage.db.
📊 Benchmarks
Each mode is measured against a base run with all modes off. Full protocol in docs/BENCHMARK.md.
/ponytail ultra— code reply tokens, −63.4%./combo medium— code reply tokens, −56.9%./rtk onwithbun run test— command output, −98.7%./rtk onwithgit status— command output, −75.0%./caveman full— reply text tokens, −13.7%.
Caveman levels spend more prompt tokens than the reply text they save. Use Caveman for writing style, not as a token saving.
🤝🏻 Contributing
Contributions are always welcome, whether you’re fixing bugs, improving docs, or shipping new features that make the project better for everyone.
Check out Contributing.md to learn how to get started and follow the recommended workflow.
⚖️ License
This project is released under the MIT License, giving you the freedom to use, modify, and distribute the code with minimal restrictions.
For the full legal text, see the MIT file.