docs: rebuild KB in OKF v0.1 with live-verified facts
Copy of the legacy ~/.pi/agent/docs tree rebuilt as the command-center knowledge base: concept files promoted to path identity, index listings stripped of frontmatter, all wikilinks/relative links resolved, every checkable claim verified against the live fleet (Dankserver = Ryzen 7 7700X + RTX 3090; Strix Halo is Dankclaw), unverifiable claims tagged. kb-lint exits 0.
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
# Pi Configuration
|
||||
|
||||
Documentation for the pi coding agent installation on ](../system/index.md).
|
||||
Everything here is configured locally on `dankware`; the LLM providers are the
|
||||
two llama.cpp servers (Dankserver, Dankclaw).
|
||||
|
||||
## Configuration Files
|
||||
|
||||
- [Pi Settings System (settings.json)](/core/settings.md) — Main `settings.json` reference. Providers, models, packages, subagent overrides.
|
||||
- [Pi Models Configuration](/pi/models.md) — `models.json` reference. Provider definitions, model specs, endpoints.
|
||||
|
||||
## Extensions
|
||||
|
||||
- [Pi Packages](/pi/packages/index.md) — Installed npm packages that extend pi functionality.
|
||||
- [Pi Peon](/pi/packages/pi-peon.md) — CESP/OpenPeon sound-pack player for lifecycle events.
|
||||
- [Pi Web Access](/pi/packages/pi-web-access.md) — Web search, URL fetching, GitHub cloning, PDF extraction, video understanding.
|
||||
- [Pi Browser Use](/packages/pi-browser-use.md) — Browser automation extension wrapping chrome-devtools-mcp with a `browser_` prefix.
|
||||
- [Pi Permission System](/packages/pi-permission-system.md) — Permission enforcement and policy configuration for subagent extensions.
|
||||
|
||||
## Skills
|
||||
|
||||
- [Pi Skills](/pi/skills.md) — Installed agent skills. Symlinked from `~/.agents/skills/` and `~/.pi/agent/skills/`.
|
||||
|
||||
## Subagent Architecture
|
||||
|
||||
- [Pi Subagents](/pi/packages/pi-subagents.md) — Core subagent delegation system. Chains, parallel execution, TUI clarification.
|
||||
|
||||
## Architecture
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A[Pi TUI] --> B[settings.json]
|
||||
A --> C[models.json]
|
||||
B --> D[Default Provider: llamacpp]
|
||||
B --> E[Default Model: frank-default-large]
|
||||
B --> F[Packages]
|
||||
B --> G[Subagent Overrides: local frank models]
|
||||
F --> H[pi-peon]
|
||||
F --> I[pi-web-access]
|
||||
F --> J[pi-browser-use]
|
||||
F --> K[pi-permission-system]
|
||||
G --> L[Small: scout, researcher]
|
||||
G --> M[Large: planner, worker, reviewer, oracle, context-builder]
|
||||
L --> N[dankserver 192.168.0.235:7770]
|
||||
M --> O[dankclaw 192.168.0.143:7770]
|
||||
```
|
||||
|
||||
## Note on the Live Default
|
||||
|
||||
`models.json` defines the live provider set. The main session provider is
|
||||
`llamacpp`; the default model is `frank-default-large` (Dankclaw). Subagents
|
||||
default to the local provider with `subagents.defaultModel = frank-default-small`
|
||||
(Dankserver); larger roles map to `frank-default-large`. Two scopes own settings:
|
||||
the user `~/.pi/settings.json` (main → Dankclaw/large) and the project
|
||||
`/home/dank/.pi/agent/settings.json` (main → Dankserver/small). When the two
|
||||
disagree, the project-scope `settings.json` in the agent home wins for the agent's
|
||||
own main session; the user-scope file governs the interactive `pi` session.
|
||||
|
||||
> **Note:** This documentation describes the pi-coding-agent era. The system has since migrated to the OMP harness era. Configuration is now at `~/.omp/agent/config.yml` and `~/.omp/agent/models.yml` (imported from `~/.pi/agent/models.json`). Legacy `~/.pi/settings.json` and `~/.pi/agent/settings.json` remain as pi-era artifacts. New OMP-managed skills live in `~/.omp/agent/managed-skills/` alongside the legacy symlinked skills at `~/.pi/agent/skills/` → `~/.agents/skills/`.
|
||||
@@ -0,0 +1,148 @@
|
||||
---
|
||||
type: reference
|
||||
title: Pi Models Configuration
|
||||
description: Complete reference for models.json — provider definitions, model specs, and API endpoints for the Frank Program.
|
||||
tags:
|
||||
- pi
|
||||
- models
|
||||
- providers
|
||||
- llamacpp
|
||||
- unverified
|
||||
timestamp: 2026-08-28
|
||||
---
|
||||
|
||||
# Pi Models Configuration (`models.json`)
|
||||
|
||||
`models.json` defines the LLM providers pi connects to. Each provider specifies a base URL, API type, authentication, and available models.
|
||||
|
||||
**Location:** `/home/dank/.pi/agent/models.json`
|
||||
|
||||
---
|
||||
|
||||
## Providers
|
||||
|
||||
Current providers in `models.json` (verified 2026-08-27, after the
|
||||
2026-08-18 service swap):
|
||||
|
||||
### llamacpp (dankserver)
|
||||
|
||||
| Property | Value |
|
||||
|----------|-------|
|
||||
| **Base URL** | `http://192.168.0.235:7770/v1` |
|
||||
| **API** | `openai-completions` |
|
||||
| **Auth** | None (EMPTY) |
|
||||
| **Host** | [[dankserver|dankserver]] |
|
||||
|
||||
#### Models
|
||||
|
||||
| Model ID | Context Window | maxTokens | Reasoning | Input Types |
|
||||
|----------|---------------|-----------|-----------|-------------|
|
||||
| `frank-default-small` | 262,144 | 262,144 | Yes | Text, image |
|
||||
|
||||
The server is upstream llama.cpp (b10121) serving HauhauCS
|
||||
Qwen3.6-35B-A3B-Uncensored-Aggressive Q6_K_P with 36 MoE experts on CPU,
|
||||
ngram-mod spec, 4 slots of ~175K context. The server serves the loaded
|
||||
model regardless of the requested model ID. Requests with any `model`
|
||||
value succeed.
|
||||
|
||||
### llamacpp (dankclaw)
|
||||
|
||||
| Property | Value |
|
||||
|----------|-------|
|
||||
| **Base URL** | `http://192.168.0.143:7770/v1` |
|
||||
| **API** | `openai-completions` |
|
||||
| **Auth** | None (EMPTY) |
|
||||
| **Host** | [[dankclaw|dankclaw]] |
|
||||
|
||||
> 2026-08-22: `frank-default-large` moved from `:52625` to `:7770` on
|
||||
> Dankclaw (operator request: the primary inference server sits on the
|
||||
> standard llama.cpp port). The OpenWebUI quadlet
|
||||
> (`OPENAI_API_BASE_URL`) was re-pointed to `:7770` in the same change.
|
||||
|
||||
#### Models
|
||||
|
||||
| Model ID | Context Window | maxTokens | Reasoning | Input Types |
|
||||
|----------|---------------|-----------|-----------|-------------|
|
||||
| `frank-default-large` | 262,144 | 262,144 | Yes | Text, image |
|
||||
|
||||
The server is the ROCmFPX llama.cpp runtime serving
|
||||
[kingjones777's Qwen3.8-Flash-Next Uncensored ROCmFP4 STRIX_LEAN GGUF](https://huggingface.co/kingjones777/Qwen3.8-Flash-Next-Uncensored-ROCmFP4-STRIX_LEAN-GGUF)
|
||||
— a 177B-parameter, 56B-MoE model sharded into 3 Q4_0-ROCmFP4 GGUF files
|
||||
(98.3 GB total) with a standalone BF16 vision embedding project (0.85 GB).
|
||||
Speculative decoding uses `--spec-type ngram-mod` because the ROCmFPX quantization
|
||||
drops the 4B MTP head. The model is loaded from
|
||||
`/home/dank/models/kingjones-Qwen3.8-Flash-Next-Uncensored-ROCmFP4-STRIX_LEAN/`;
|
||||
the original Q4_0-ROCmFP4-STRIX variant remains as a `.backup` directory.
|
||||
Context is 262144 (native max), 1 slot. Concurrent requests queue on the
|
||||
single slot; the server never preempts a running generation. It exposes
|
||||
`reasoning_content` in deepseek reasoning format and supports
|
||||
multimodal (vision) inference via the embedded mmproj.
|
||||
|
||||
2026-08-27: Upgraded from the original Qwen3.8-Flash-Next Q4_0-ROCmFP4-STRIX
|
||||
GGUF to the Uncensored STRIX_LEAN variant with vision support and
|
||||
ngram-mod speculative decoding.
|
||||
|
||||
### Thinking Levels
|
||||
|
||||
Pi's default thinking level is configured globally in `settings.json` as
|
||||
`"defaultThinkingLevel": "medium"`. The model entries map Pi's `max` level to the llama.cpp-supported `xhigh`
|
||||
wire value. Pi shows `max` in the thinking selector from the global settings,
|
||||
but sends `reasoning_effort: "xhigh"` to both local llama.cpp endpoints.
|
||||
`thinkingLevelMap` can translate a UI level without changing the global default.
|
||||
Verified 2026-07-22:
|
||||
`getSupportedThinkingLevels` returns `off,minimal,low,medium,high,xhigh`
|
||||
and the live server accepts `reasoning_effort: "xhigh"` and returns
|
||||
`reasoning_content` (verified 2026-08-21).
|
||||
|
||||
Mechanism (pi-ai `models.js` + `openai-completions.js`):
|
||||
|
||||
- `getSupportedThinkingLevels`: extended levels `xhigh`/`max` appear only
|
||||
when `thinkingLevelMap` defines them (string = supported, `null` =
|
||||
hidden, omitted = not supported).
|
||||
- Default request path (no `compat.thinkingFormat`): sends
|
||||
`reasoning_effort = thinkingLevelMap[level] ?? level` when
|
||||
`supportsReasoningEffort` is true (default for this provider).
|
||||
|
||||
## Token Budgets (`maxTokens`)
|
||||
|
||||
Verified in the pi source, 2026-08-16 (`@earendil-works/pi-coding-agent` 0.84.1 + `pi-ai`):
|
||||
|
||||
- `maxTokens` is an optional model field in `models.json`. When omitted, pi defaults the model object to 16,384 (`provider-composer.js`).
|
||||
- The value is metadata. It drives the model-picker "max out" display and length-error recovery (`isRecoverableLength`).
|
||||
- Normal chat turns do not send `max_tokens`. The request builder sends the field only when a per-request option is set (`openai-completions.js buildParams`: `if (options?.maxTokens)`). The agent loop passes no such option.
|
||||
- The only pi calls that send `max_tokens` are context compaction and branch summarization. They are deliberately budgeted.
|
||||
|
||||
## Model Selection Strategy
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
A[User Request] --> B{Complexity?}
|
||||
B -->|Large context / long docs| C[frank-default-large<br/>CIRU llama.cpp dankclaw :7770, 262K ctx]
|
||||
B -->|Fast / interactive| D[frank-default-small<br/>llama.cpp dankserver :7770, 262K ctx]
|
||||
|
||||
The CIRU endpoint (dankclaw) serves the 177B 56B-MoE model with
|
||||
262144 context, ngram-mod speculative decoding, 1 slot. Concurrent
|
||||
requests queue on the single slot. The upstream
|
||||
llama.cpp endpoint (dankserver) serves the 35B A3B MoE model with 36
|
||||
experts on CPU and 262K context per slot.
|
||||
## Live Defaults
|
||||
|
||||
`settings.json` picks the main session provider and model (verified 2026-08-19):
|
||||
|
||||
| Scope | Provider | Model |
|
||||
|-------|----------|-------|
|
||||
| Main session | `llamacpp (dankclaw)` | `frank-default-large` |
|
||||
| Subagent default | `frank-default-small` (llamacpp dankserver) | ~262K ctx per slot, ngram-mod spec |
|
||||
| Subagent overrides | scout, researcher | `frank-default-small` |
|
||||
| Subagent overrides | planner, worker, reviewer, oracle, context-builder | `frank-default-large` (llamacpp dankclaw) |
|
||||
|
||||
The subagent model IDs (`frank-default-small`, `frank-default-large`) resolve against the new provider set in `models.json`. The current mappings are `max -> xhigh` for both local models; the global and subagent defaults remain `max`.
|
||||
|
||||
---
|
||||
|
||||
## See Also
|
||||
|
||||
- [[settings|settings]] — Main configuration file
|
||||
- [[dankserver|dankserver]] — Primary llama.cpp server
|
||||
- [[dankclaw|dankclaw]] — Secondary llama.cpp server
|
||||
- [ornith-llama-cpp-setup](../tools/ornith-llama-cpp-setup/index.md) — Local Ornith model setup
|
||||
@@ -0,0 +1,29 @@
|
||||
# Pi Packages
|
||||
|
||||
Pi extends its functionality through npm packages installed via `pi install`. Each package provides extensions, skills, prompts, or themes.
|
||||
|
||||
## Installed Packages
|
||||
|
||||
| Package | Version | Description |
|
||||
|---------|---------|-------------|
|
||||
| [[pi-peon|pi-peon]] | 0.1.1 | CESP/OpenPeon sound-pack player for pi lifecycle events |
|
||||
| [[pi-web-access|pi-web-access]] | 0.22.0 | Web search, URL fetching, GitHub cloning, PDF extraction, video understanding |
|
||||
|
||||
## Core Extension
|
||||
|
||||
| Package | Version | Description |
|
||||
|---------|---------|-------------|
|
||||
| [[pi-subagents|pi-subagents]] | 0.36.0 | Core subagent delegation — chains, parallel execution, TUI clarification |
|
||||
|
||||
---
|
||||
|
||||
## See Also
|
||||
|
||||
- [[settings|settings]] — Package configuration in settings.json
|
||||
- [pi](../index.md) — Pi configuration overview
|
||||
|
||||
* [Pi Peon](pi-peon.md) — CESP/OpenPeon sound-pack player for pi lifecycle events — peons, GLaDOS, battlecruisers, and 300+ community sound packs.
|
||||
|
||||
* [Pi Subagents](pi-subagents.md) — Core pi extension for delegating tasks to subagents with chains, parallel execution, and TUI clarification.
|
||||
|
||||
* [Pi Web Access](pi-web-access.md) — Web search, URL fetching, GitHub cloning, PDF extraction, and video understanding for Pi. Zero-config with Exa MCP.
|
||||
@@ -0,0 +1,85 @@
|
||||
---
|
||||
type: reference
|
||||
title: Pi Peon
|
||||
description: CESP/OpenPeon sound-pack player for pi lifecycle events — peons, GLaDOS, battlecruisers, and 300+ community sound packs.
|
||||
tags:
|
||||
- pi
|
||||
- package
|
||||
- sound
|
||||
- peon
|
||||
- cesp
|
||||
- openpeon
|
||||
- unverified
|
||||
timestamp: 2026-08-28
|
||||
---
|
||||
|
||||
# Pi Peon
|
||||
|
||||
**Package:** `@wierdbytes/pi-peon`
|
||||
**Version:** 0.1.1
|
||||
**Author:** wierdbytes
|
||||
|
||||
Plays CESP/OpenPeon sound packs on pi lifecycle events. Drop a sound pack into `~/.openpeon/packs/<name>/` or install from the community registry (300+ packs).
|
||||
|
||||
---
|
||||
|
||||
## Install
|
||||
|
||||
```bash
|
||||
pi install @wierdbytes/pi-peon
|
||||
```
|
||||
|
||||
## Sound Packs
|
||||
|
||||
Installed packs in `~/.openpeon/packs/`:
|
||||
|
||||
| Pack | Theme |
|
||||
|------|-------|
|
||||
| `peon` | Warcraft III Orc Peon (default) |
|
||||
| `peasant` | Medieval peasant |
|
||||
| `sc2_scv` | StarCraft II SCV |
|
||||
| `ra2_soviet_engineer` | Red Alert 2 Soviet Engineer |
|
||||
| `sc_battlecruiser` | StarCraft Battlecruiser |
|
||||
| `zugzug` | Zugzug robot |
|
||||
|
||||
## Events
|
||||
|
||||
| pi Event | CESP Category |
|
||||
|----------|---------------|
|
||||
| `session_start` | `session.start` |
|
||||
| `agent_start` | `task.acknowledge` |
|
||||
| `agent_end` (used tools) | `task.complete` |
|
||||
| `agent_end` (no tools) | `input.required` |
|
||||
| `tool_result` (error) | `task.error` |
|
||||
| Rate limit (429) | `resource.limit` |
|
||||
| `task.progress` | `task.progress` |
|
||||
| User spam (3 msgs/5s) | `user.spam` |
|
||||
|
||||
## Commands
|
||||
|
||||
| Command | Description |
|
||||
|---------|-------------|
|
||||
| `/peon` | Open settings modal |
|
||||
| `/peon status` | Print active pack + config |
|
||||
| `/peon mute` | Silence all categories |
|
||||
| `/peon unmute` | Re-enable sounds |
|
||||
| `/peon test [category]` | Play a random sound |
|
||||
| `/peon reset` | Restore default config |
|
||||
|
||||
CLI flag `--no-peon` disables playback for one session.
|
||||
|
||||
## Settings
|
||||
|
||||
The `/peon` command opens an interactive settings modal with:
|
||||
|
||||
- **Packs** — Active, available, and registry packs
|
||||
- **Volume** — Global volume control
|
||||
- **Mute** — Per-event toggles
|
||||
- **Registry browser** — Browse and install from community registry
|
||||
|
||||
---
|
||||
|
||||
## See Also
|
||||
|
||||
- [packages](../../packages/index.md) — Package overview
|
||||
- [pi](../index.md) — Pi configuration
|
||||
@@ -0,0 +1,68 @@
|
||||
---
|
||||
type: reference
|
||||
title: Pi Subagents
|
||||
description: Core pi extension for delegating tasks to subagents with chains, parallel execution, and TUI clarification.
|
||||
tags:
|
||||
- pi
|
||||
- subagents
|
||||
- delegation
|
||||
- chains
|
||||
- limits
|
||||
- unverified
|
||||
timestamp: 2026-08-28
|
||||
---
|
||||
|
||||
# Pi Subagents
|
||||
|
||||
**Package:** `pi-subagents`
|
||||
**Version:** 0.36.0
|
||||
|
||||
Core pi extension for delegating tasks to subagents. Supports sequential chains, parallel execution, and TUI clarification workflows.
|
||||
|
||||
## Features
|
||||
|
||||
- **Sequential chains** — Pipeline tasks through multiple subagents
|
||||
- **Parallel execution** — Fan out independent tasks simultaneously
|
||||
- **TUI clarification** — Interactive preview and editing before execution
|
||||
- **Watchdog** — Health monitoring for subagent runs
|
||||
- **Model overrides** — Per-agent model selection
|
||||
|
||||
## Agent Roles
|
||||
|
||||
| Role | Default Model | Purpose |
|
||||
|------|---------------|---------|
|
||||
| `scout` | frank-default-small | Quick exploration |
|
||||
| `researcher` | frank-default-small | Information gathering |
|
||||
| `planner` | frank-default-large | Task planning |
|
||||
| `worker` | frank-default-large | Implementation |
|
||||
| `reviewer` | frank-default-large | Code/document review |
|
||||
| `oracle` | frank-default-large | Complex reasoning |
|
||||
| `context-builder` | frank-default-large | Context building |
|
||||
|
||||
## Parallel Execution and Limits
|
||||
|
||||
Parallel execution fans out independent tasks. The extension applies several limits to control the load.
|
||||
|
||||
| Limit | Effective value | Source |
|
||||
|-------|-----------------|--------|
|
||||
| `globalConcurrencyLimit` | **2** | `extensions/subagent/config.json` |
|
||||
| `parallel.maxTasks` | 8 | default |
|
||||
| `parallel.concurrency` | 4 | default |
|
||||
| `maxSubagentSpawnsPerSession` | unlimited | default |
|
||||
| `maxSubagentDepth` | 2 | default |
|
||||
| `turnBudget.maxTurns` | 30 | `extensions/subagent/config.json` |
|
||||
|
||||
`globalConcurrencyLimit` caps the simultaneously-running subagent tasks within one run. The default is 20. The value here is 2. Effective concurrency is the lower of the local cap and the available global slots. Per-step `concurrency` and `parallel.concurrency` still apply. A value below 1 is clamped to 1.
|
||||
|
||||
Set `globalConcurrencyLimit` in `extensions/subagent/config.json`. The file also configures `artifactDir`, `turnBudget`, and proactive skill suggestions.
|
||||
|
||||
`maxSubagentSpawnsPerSession` caps the cumulative child launches during one parent session. It counts completed and failed children, parallel task counts, static chain steps, and bounded dynamic fanout children. The default is unlimited. Set the value to `0` to disable a configured cap.
|
||||
|
||||
`maxSubagentDepth` controls nested delegation. The default is 2. Each agent can tighten the limit for its own child runs. An agent cannot relax a stricter inherited limit.
|
||||
|
||||
No per-model limit exists. All caps are global to a run or a session. They do not depend on the child model.
|
||||
|
||||
## See Also
|
||||
|
||||
- [[settings|settings]] — Subagent configuration
|
||||
- [[models|models]] — Model definitions
|
||||
@@ -0,0 +1,141 @@
|
||||
---
|
||||
type: reference
|
||||
title: Pi Web Access
|
||||
description: Web search, URL fetching, GitHub cloning, PDF extraction, and video understanding for Pi. Zero-config with Exa MCP.
|
||||
tags:
|
||||
- pi
|
||||
- package
|
||||
- web-search
|
||||
- fetch
|
||||
- youtube
|
||||
- unverified
|
||||
timestamp: 2026-08-28
|
||||
---
|
||||
|
||||
# Pi Web Access
|
||||
|
||||
**Package:** `pi-web-access`
|
||||
**Version:** 0.22.0
|
||||
**Author:** Nico Bailon
|
||||
|
||||
Web search, content extraction, and video understanding for Pi. It calls your self-hosted SearXNG first when one is configured, and falls through to other providers.
|
||||
|
||||
> **Active setup:** `~/.pi/web-search.json` locks search to SearXNG at `http://192.168.0.143:8081` (dankclaw), permits LAN fetches via `ssrf.allowRanges`, and sets `maxInlineContentChars` to 50000. The config file is cached in memory per process — a changed file takes effect on the next Pi session.
|
||||
|
||||
---
|
||||
|
||||
## Install
|
||||
|
||||
```bash
|
||||
pi install npm:pi-web-access
|
||||
```
|
||||
|
||||
## Search Providers
|
||||
|
||||
Provider chain (in priority order, v0.22):
|
||||
|
||||
1. **SearXNG** (if configured) — Self-hosted, private search
|
||||
2. **OpenAI** — Codex subscription or API key
|
||||
3. **Exa** — Zero-config via MCP, or API key
|
||||
4. **Brave** — API key
|
||||
5. **Parallel** — API key
|
||||
6. **TinyFish** — API key
|
||||
7. **Search1API** — API key
|
||||
8. **Searchinfinity** — API key
|
||||
9. **Querit** — API key
|
||||
10. **Tavily** — API key
|
||||
11. **Jina** — API key
|
||||
12. **SERPdive** — API key
|
||||
13. **Kagi** — API key
|
||||
14. **Bocha** — API key
|
||||
15. **Ollama** — API key
|
||||
16. **Perplexity** — API key
|
||||
17. **Gemini API** — API key
|
||||
18. **Gemini Web** — Browser-cookie access
|
||||
|
||||
A single-provider field (`provider` or `searchProvider`) pins the default and takes precedence over `searchRouting`. `searchRouting.providers` plus `fallbackOn` define an explicit ordered fallback over typed failures (`transient`, `quota`, `network`, `invalid-response`).
|
||||
|
||||
## Configuration
|
||||
|
||||
**Location:** `~/.pi/web-search.json`
|
||||
|
||||
```json
|
||||
{
|
||||
"searxngBaseUrl": "http://192.168.0.143:8081",
|
||||
"searchProvider": "searxng",
|
||||
"maxInlineContentChars": 50000,
|
||||
"workflow": "none",
|
||||
"ssrf": {
|
||||
"allowRanges": ["192.168.0.0/24"]
|
||||
},
|
||||
"openaiApiKey": "sk-...",
|
||||
"braveApiKey": "BSA_...",
|
||||
"exaApiKey": "exa-...",
|
||||
"perplexityApiKey": "pplx-...",
|
||||
"geminiApiKey": "AIza..."
|
||||
}
|
||||
```
|
||||
|
||||
Key fields:
|
||||
|
||||
- `searxngBaseUrl` — the SearXNG instance to call. Env `SEARXNG_BASE_URL` wins over this file. The client calls `GET {base}/search?q=...&format=json` with a 30 s timeout; the base URL and its redirects stay subject to the SSRF guard.
|
||||
- `searchProvider` — `searxng` locks the primary provider. `auto` picks the first available. A single-provider field wins over `searchRouting`.
|
||||
- `maxInlineContentChars` — size of each `fetch_content` / `get_search_content` content slice. Default 30000, cap 200000. Full fetched content stays stored for later retrieval.
|
||||
- `ssrf.allowRanges` — LAN CIDR ranges allowed through `fetch_content`. This blocks private IPs by default.
|
||||
- `workflow` — `none` (raw results, no browser), `summary-review` (curator window with summary draft), or `auto-summary`.
|
||||
|
||||
## Capabilities
|
||||
|
||||
### Web Search
|
||||
|
||||
```typescript
|
||||
web_search({ query: "TypeScript best practices 2025" })
|
||||
```
|
||||
|
||||
### URL Fetching
|
||||
|
||||
```typescript
|
||||
fetch_content({ url: "https://docs.example.com/guide" })
|
||||
```
|
||||
|
||||
### GitHub Cloning
|
||||
|
||||
GitHub URLs are cloned locally. The agent gets real file contents, not rendered HTML.
|
||||
|
||||
```typescript
|
||||
fetch_content({ url: "https://github.com/owner/repo" })
|
||||
```
|
||||
|
||||
### Video Understanding
|
||||
|
||||
Point at a YouTube video or local screen recording and ask questions about visual content.
|
||||
|
||||
```typescript
|
||||
// YouTube
|
||||
fetch_content({ url: "https://youtube.com/watch?v=...", prompt: "What book is shown?" })
|
||||
|
||||
// Local video
|
||||
fetch_content({ url: "/path/to/recording.mp4" })
|
||||
```
|
||||
|
||||
### PDF Extraction
|
||||
|
||||
```typescript
|
||||
fetch_content({ url: "https://example.com/paper.pdf" })
|
||||
```
|
||||
|
||||
## Optional Dependencies
|
||||
|
||||
```bash
|
||||
# Video frame extraction
|
||||
sudo pacman -S ffmpeg yt-dlp
|
||||
```
|
||||
|
||||
Without these, video analysis (transcripts, visual descriptions via Gemini) still works. Frame extraction requires ffmpeg and yt-dlp. Both are installed on dankware (verified 2026-08-28: ffmpeg n9.0.1, yt-dlp 2026.08.19).
|
||||
|
||||
GitHub URLs get special handling: `fetch_content` clones the repo locally instead of scraping HTML (root URL returns tree + README, `/blob/` returns file contents). Repos over 350 MB get an API-based view; `forceClone: true` overrides. Clones cache per session under `/tmp/pi-github-repos` and wipe on session change. Private repos need the `gh` CLI. Disable with `githubClone.enabled: false`.
|
||||
|
||||
## See Also
|
||||
|
||||
- [Pi Packages](index.md) — Package overview
|
||||
- [Pi Configuration](../index.md) — Pi configuration
|
||||
@@ -0,0 +1,47 @@
|
||||
---
|
||||
type: index
|
||||
title: Pi Skills
|
||||
description: Documentation for installed agent skills — code-review, diagnosing-bugs, find-skills, grilling, handoff, implement, obsidian-vault, prototype, tdd, teach, writing-great-skills, writing-guidelines, and zim-knowledge-base.
|
||||
tags:
|
||||
- pi
|
||||
- skills
|
||||
- index
|
||||
- unverified
|
||||
timestamp: 2026-08-28
|
||||
---
|
||||
|
||||
# Pi Skills
|
||||
|
||||
Agent skills teach the agent new workflows. Skills are stored in `~/.pi/agent/skills/` (local) and symlinked from `~/.agents/skills/`.
|
||||
|
||||
## Installed Skills
|
||||
|
||||
| Skill | Source | Description |
|
||||
|-------|--------|-------------|
|
||||
| **code-review** | Local | Two-axis review: Standards and Spec, parallel sub-agents |
|
||||
| **diagnosing-bugs** | Symlinked (.agents) | Diagnosis loop for hard bugs and performance regressions |
|
||||
| **find-skills** | Symlinked (.agents) | Discover and install agent skills from the ecosystem |
|
||||
| **grilling** | Symlinked (.agents) | Stress-test a plan or design before building |
|
||||
| **handoff** | Local | Compact conversation into a handoff document |
|
||||
| **implement** | Symlinked (.agents) | Implement work from specs or tickets |
|
||||
| **obsidian-vault** | Symlinked (.agents) | Search, create, manage notes in Obsidian vault |
|
||||
| **prototype** | Symlinked (.agents) | Build throwaway prototypes for design questions |
|
||||
| **tdd** | Symlinked (.agents) | Test-driven development, red-green-refactor |
|
||||
| **teach** | Symlinked (.agents) | Teach the user a new skill or concept |
|
||||
| **writing-great-skills** | Symlinked (.agents) | Reference for writing and editing agent skills well |
|
||||
| **writing-guidelines** | Local | Review docs for Writing Guidelines compliance |
|
||||
| **zim-knowledge-base** | Local | Search Wikipedia ZIM files for research |
|
||||
|
||||
## Skill Locations
|
||||
|
||||
| Path | Type |
|
||||
|------|------|
|
||||
| `~/.pi/agent/skills/` | Local skills directory |
|
||||
| `~/.agents/skills/` | Shared skills (symlinked from) |
|
||||
|
||||
---
|
||||
|
||||
## See Also
|
||||
|
||||
- [pi](index.md) — Pi configuration overview
|
||||
- [[npx-skills|npx-skills]] — Skill distribution via npm
|
||||
Reference in New Issue
Block a user