@vitos-pizza/vitos-pizza
Vito's Pizzeria — a Pi distribution (Garfield-approved)
Package details
Install @vitos-pizza/vitos-pizza from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:@vitos-pizza/vitos-pizza- Package
@vitos-pizza/vitos-pizza- Version
0.2.0- Published
- Jul 11, 2026
- Downloads
- not available
- Author
- yishidixiashang
- License
- MIT
- Types
- extension, skill
- Size
- 27.9 MB
- Dependencies
- 9 dependencies · 0 peers
Pi manifest JSON
{
"extensions": [
"node_modules/@vitos-pizza/permission-system/extensions",
"node_modules/@vitos-pizza/question/extensions",
"node_modules/@vitos-pizza/ui-enhancements/extensions",
"node_modules/@vitos-pizza/agent-mode/extensions",
"node_modules/@vitos-pizza/subagents/extensions",
"node_modules/@vitos-pizza/websearch/extensions",
"node_modules/@vitos-pizza/session-title/extensions",
"node_modules/@vitos-pizza/todoist/extensions",
"node_modules/@vitos-pizza/keybindings/extensions"
],
"skills": [
"node_modules/@vitos-pizza/subagents/skills"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
vitos-pizza
Vito's Pizzeria is a personal Pi distribution — like LazyVim for Neovim. One install gives you a curated set of extensions and workflows. Built on upstream Pi, not a fork.
Inspired by Vito's Pizzeria from Garfield — Garfield's favorite pizza place.
Prerequisites
- Node.js >= 22.19.0
- Pi installed globally:
npm install -g --ignore-scripts @earendil-works/pi-coding-agent
Install
# npm (recommended)
pi install npm:@vitos-pizza/vitos-pizza@0.2.0
# git (pinned tag)
pi install git:github.com/xin2017338/vitos-pizza@v0.2.0
From source:
git clone https://github.com/xin2017338/vitos-pizza.git vitos-pizza
cd vitos-pizza
npm install
# Global Pi settings (~/.pi/agent/settings.json)
npm run install:pi
# or: pi install .
# Project-local settings (.pi/settings.json)
npm run install:pi:local
# or: pi install -l .
# Try without installing
npm run try:pi
# or: pi -e .
After install, start pi. Sessions are auto-titled from the first meaningful user message (see Session auto-title below). Delegate work with subagents (see below). When you change extension code, use /reload.
Structure
vitos-pizza/ # Pi distribution (install this)
├── assets/logo.svg
├── package.json # distro manifest + pi-package entry
├── AGENTS.md
└── packages/ # built-in modules (not installed separately)
├── ui-enhancements/ # @vitos-pizza/ui-enhancements — TUI display optimizations
├── agent-mode/ # @vitos-pizza/agent-mode — agent / plan / execute mode switching
├── permission-system/ # @vitos-pizza/permission-system — allow/ask/deny gates
├── question/ # @vitos-pizza/question — structured ask-user question tool
├── session-title/ # @vitos-pizza/session-title — auto session naming
├── subagents/ # @vitos-pizza/subagents — scout/planner/worker delegation
├── websearch/ # @vitos-pizza/websearch — web_search / web_read tools
├── todoist/ # @vitos-pizza/todoist — in-memory task list + TUI widget
└── keybindings/ # @vitos-pizza/keybindings — centralized shortcut bindings
Built-in modules are wired via scripts/sync-pi-manifest.mjs (supports pi.requires load order).
| Path | Role |
|---|---|
| Repo root | The distribution — pi install . |
packages/<module>/ |
Built-in capability modules |
scripts/sync-pi-manifest.mjs |
Wires modules into the root pi manifest |
Session auto-title
Built-in module @vitos-pizza/session-title names sessions asynchronously after the first agent reply:
- Waits for the first turn to finish, then summarizes user intent + assistant reply via the subagents
titleagent (RPC, not a direct LLM call) - Title is ≤20 characters; trivial greetings are skipped via fast rules
- Runs in the background — does not block the main agent
- Optional dedicated model via
.pi/settings.json; defaults to the current session model
Example settings (also in .pi/settings.example.json):
{
"session": {
"autoTitle": {
"enabled": true,
"model": "google/gemini-2.5-flash",
"minCharsForLlm": 4,
"fastRules": true
}
}
}
Use /name to override manually. See auto titles in /resume.
Subagents & permissions
Built-in @vitos-pizza/subagents lets the main agent delegate via the subagent and wait tools:
subagent({ agent: "scout", task: "map the auth module" })
subagent({ chain: [{ agent: "scout", task: "..." }, { agent: "planner", task: "plan from {previous}" }] })
subagent({ tasks: [{ agent: "scout", task: "scan src" }, { agent: "scout", task: "scan tests" }] })
subagent({ agent: "worker", task: "...", async: true }) → wait({ id: "<runId>" })
Built-in agents: scout, planner, worker, title (session auto-naming). Other modules request runs over pi.events RPC — import requestSubagentRun from @vitos-pizza/subagents/rpc/client.
Web search
Built-in @vitos-pizza/websearch adds web_search and web_read tools. Works out of the box via Exa MCP and keyless Firecrawl — no API keys required for basic use.
web_search({ query: "TypeScript 5.8 release notes" })
web_read({ url: "https://docs.example.com/guide" })
/search-status
Default backends: Exa MCP → Firecrawl → optional keyed providers. Configure globally at ~/.pi/agent/extensions/search.json or per-project at .pi/search.json (see .pi/search.example.json).
Permissions: web_search and web_read are ask in agent and plan modes (subagent ask prompts forward to the parent session); allow in execute mode.
Do not install community search extensions (e.g. pi-web-access, pi-search-hub) alongside vitos-pizza — tool names would collide.
Built-in @vitos-pizza/ui-enhancements improves TUI readability: built-in tools use smart compact rendering (read-only bash/grep/read collapsed by default; write/edit/dangerous commands always show full output). Toggle expansion with Ctrl+O. Welcome header and border status bar are on by default (no settings required). Use /vitos-ui for status; /builtin-header restores Pi's built-in header.
Built-in @vitos-pizza/permission-system enforces allow / ask / deny on tools, bash, and paths. Child subagent ask prompts forward to the parent session UI automatically.
Agent modes
@vitos-pizza/agent-mode provides three project-level modes. Switch with:
/mode # interactive picker
/mode plan # or agent | execute
Or press F6 to cycle agent → plan → execute. Use /vitos-shortcuts to view bindings.
| Mode | Permissions | Behavior |
|---|---|---|
agent |
default |
Balanced — read/grep/find/ls allowed in the git repo; bash ask for other commands |
plan |
plan |
Read-only — explore without edits or shell; subagent / question for scout/planner |
execute |
yolo |
Minimal gates — only blocks .env, ~/.ssh, rm -rf |
Current mode is shown in the border status bar (· plan / · execute). On first session in a project, agent + default preset is written to .pi/extensions/pi-permission-system/config.json if missing. Use /permission-system for debug/YOLO runtime toggles. See config.example.json.
Optional subagents settings in .pi/settings.example.json (subagents.disableThinking, model overrides, etc.).
Adding a module
- Have AI (or you) create
packages/<name>/withpackage.json,extensions/, etc. - Set
"name": "@vitos-pizza/<name>"in the module'spackage.json. - Run:
npm run sync
npm install
pi install . # or /reload in Pi
Development
npm run sync # Regenerate root pi manifest from packages/*
npm run typecheck
npm run lint
npm run lint:fix
Pi loads TypeScript extensions directly — no build step.
Acknowledgments
vitos-pizza builds on the Pi ecosystem and several open-source projects. We are grateful to their authors and contributors.
Convention: any new feature, module, or dependency that references external open source must add a row here (see AGENTS.md → Open-source acknowledgments).
Platform & distribution model
| Project | Role | Link |
|---|---|---|
Pi (@earendil-works/pi-coding-agent) |
Agent runtime, extension API, and TUI — the foundation this distribution installs on top of | pi.dev · GitHub |
| LazyVim | Inspiration for the “one install, curated defaults” distribution model (Pi distribution ≈ LazyVim for Neovim) | GitHub |
Features referenced or adapted
| Project | Used in | Notes |
|---|---|---|
| Pi official subagent example | @vitos-pizza/subagents |
Subprocess spawn, chain/parallel delegation, agent markdown discovery |
Pi official question example |
@vitos-pizza/question |
Structured ask-user UI (ctx.ui.custom); adapted with subagent parent-session forwarding |
| @gotgenes/pi-permission-system | @vitos-pizza/permission-system |
Flat permission config format, preset modes, subagent prompt forwarding — reimplemented in-tree |
| @ryan_nookpi/pi-extension-auto-name | @vitos-pizza/session-title |
Fire-and-forget async title via completeSimple |
| djdembeck/pi-session-title | @vitos-pizza/session-title |
Early community session naming patterns |
| pi-subagents (nicobailon) | Subagent design | Community reference when shaping chain/parallel UX |
| pi-search-hub | @vitos-pizza/websearch |
Backend registry, config merge, auto-fallback dispatch, /search-status |
| pi-web-access | @vitos-pizza/websearch |
Zero-config Exa MCP default chain and tool prompt guidelines |
| pi-web-search | @vitos-pizza/websearch |
session_start config refresh lifecycle pattern |
Pi minimal-mode / built-in-tool-renderer examples |
@vitos-pizza/ui-enhancements |
Compact built-in tool rendering and smart bash collapse |
| Virgil-Bulens minimal-mode gist | @vitos-pizza/ui-enhancements |
Read-only bash whitelist and session collapsed-by-default UX |
| pi-statusbar | @vitos-pizza/ui-enhancements |
Welcome header layout and loaded-counts information architecture |
| pi-powerline-footer | @vitos-pizza/ui-enhancements |
Welcome panel design and recent-sessions discovery |
Pi border-status-editor example |
@vitos-pizza/ui-enhancements |
Editor-border status bar (model, thinking, context, cwd, git) |
| sf-welcome | @vitos-pizza/ui-enhancements |
Welcome header session lifecycle and tips layout |
| Claude Code permission UX | Agent modes (agent / plan / execute) |
Preset naming and mode-switching inspiration (not a code dependency) |
| Claude Code TodoWrite / Task tools | @vitos-pizza/todoist |
Complete = status done; delete only when no longer relevant (cancelled / mistaken) |
| @capyup/pi-basic-tools todo | @vitos-pizza/todoist |
completed vs deleted prompt boundary for task-list tools |
| pi-package-template | Repo layout | Pi package monorepo conventions |
Runtime & tooling libraries
| Library | Used in | Link |
|---|---|---|
| tree-sitter-bash + web-tree-sitter | @vitos-pizza/permission-system |
Bash command parsing for permission gates |
| Zod | @vitos-pizza/permission-system |
Config validation |
| Biome | Dev tooling | Lint and format |
| Vitest | Tests | Unit and integration tests |
| TypeScript | All packages | Type checking |
If we missed a project you rely on, please open an issue or PR — we want to credit every upstream contribution properly.
License
MIT