Once Homebrew is installed the remainder of the prerequisites can be installed with the following command:
brew install git tmux stow zsh gh
cargo install tree-sitter-cli --lockedCheckout the repository into ~/.dotfiles and use stow to create the symlinks:
git clone git@github.com/marcofranssen/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
stow .curl -sS https://raw.githubusercontent.com/marcofranssen/dotfiles/main/install_plugins_vim.sh | bashcurl -sS https://raw.githubusercontent.com/marcofranssen/dotfiles/main/install_gitconfig.sh | bashcurl -sS https://raw.githubusercontent.com/marcofranssen/dotfiles/main/install_ghconfig.sh | bashI'm using nono.sh to sandbox my agents.
brew install nono
nono pull nolabs-ai/pi
nono profile init pi --extends nolabs-ai/pi --fullInstall the Pi coding agent:
pnpm add -g --ignore-scripts @earendil-works/pi-coding-agentStart Pi and authenticate each provider that should be available to the parent session or subagents:
piThen run /login and complete the flows for OpenAI Codex and Amazon
Bedrock. Both providers are intentionally enabled. The default parent model
is OpenAI Codex Terra, while specialist subagents can use either provider.
After adding a provider or changing enabledModels, restart Pi: the model
picker's scoped model list is created when a session starts.
The stowed configuration lives at .pi/agent/settings.json (linked to
~/.pi/agent/settings.json). Use /model to change the parent model in a
running session. A default provider is not a provider lock: every authenticated
model listed in enabledModels remains selectable, and subagents use their
fully-qualified configured model independently of the parent model.
The configuration uses a cost-aware three-tier model mix:
- Luna for cheap, bounded reconnaissance and generic delegation.
- Terra for normal substantial work, including source-backed research.
- Sol for adversarial reviews where deeper reasoning is worth the cost.
- Claude Sonnet/Opus where their larger context or implementation/advisory strengths are more valuable than minimizing Bedrock usage.
subagents.defaultModel is Luna at low thinking. It is a safe fallback for
future or package-provided agents that do not define a model or thinking level;
it does not override the explicit mappings below.
| Subagent | Primary model and thinking | Fallbacks | Why |
|---|---|---|---|
scout |
OpenAI Codex Luna, low | Bedrock Luna, then Claude Haiku 4.5 | Fast, inexpensive codebase reconnaissance and compact handoffs. |
delegate |
OpenAI Codex Luna, low | Bedrock Luna, then Claude Sonnet 4.6 | Routine, well-scoped tasks and summaries should use the lowest capable tier. |
researcher |
OpenAI Codex Terra, medium | Bedrock Terra, then Claude Sonnet 4.6 / Sonnet 5 | Terra is the normal source-evaluation and synthesis tier; Sonnet fallbacks preserve access to much larger context when needed. |
worker |
Claude Sonnet 5, high | Claude Sonnet 4.6 | The primary implementation lane favors Sonnet's coding behavior and 1M-token context. High thinking reduces costly implementation/rework cycles. |
reviewer |
OpenAI Codex Sol, high | Bedrock Sol, then Claude Opus 4.8 / Sonnet 5 | Reviews are adversarial correctness/security work, so deeper reasoning is deliberate. Use a one-off Terra override for inexpensive routine reviews. |
oracle (advisor) |
Claude Opus 4.8, high | Claude Sonnet 5, then Claude Fable 5 | Rare high-stakes architecture and decision-consistency checks optimize for judgment rather than cost. |
Fallbacks preserve the same model across providers first: Codex Luna, Terra,
or Sol retries through its Bedrock equivalent before moving to a different Claude
model. The later fallback models are used only for retryable provider/model
failures, such as rate limits or temporary availability errors; they are not a
task-based quality escalation mechanism. Use a per-run model override when a
specific task needs a different tier.
For example, run a bounded implementation with Terra without changing the persistent worker mapping:
/run worker[model=openai-codex/gpt-5.6-terra:high] "Implement the approved plan"
The packages list in .pi/agent/settings.json installs the following
extensions and skill sources when Pi starts. Package changes also require a Pi
restart.
| Package | Purpose |
|---|---|
npm:pi-subagents |
Adds the multi-model subagent fleet, including the scout, delegate, researcher, worker, reviewer, and oracle roles used above. |
npm:pi-web-access |
Provides web research tools such as web_search, fetch_content, and get_search_content, enabling source-backed researcher runs. |
git:github.com/apmantza/pi-lens |
Adds code-intelligence tools: symbol/module discovery, targeted reads, LSP diagnostics, and optional AST/LSP navigation tools. |
npm:@piotr-oles/pi-reflag |
Provides reflag, a search/command utility used for efficient repository inspection. brew install ripgrep fd |
git:github.com/cli/cli |
Supplies GitHub CLI-related agent skills and usage guidance. The gh executable itself is installed separately through Homebrew. |
Packages can expose tools, commands, agents, or skills. A skill's guidance is
loaded only when the task matches it; package installation alone does not force
a subagent or tool to run. Keep package names in settings.json rather than
installing them ad hoc so the Pi environment is reproducible across machines.