pi-para
PARA Knowledge Base Extension for pi — persistent, LLM-curated personal wiki
Package details
Install pi-para from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:pi-para- Package
pi-para- Version
0.7.0- Published
- Jul 19, 2026
- Downloads
- 1,277/mo · 1,256/wk
- Author
- picassio
- License
- MIT
- Types
- extension, skill
- Size
- 1.2 MB
- Dependencies
- 4 dependencies · 5 peers
Pi manifest JSON
{
"extensions": [
"./src/index.ts"
],
"skills": [
"./skills"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
pi-para
A pi extension that maintains a persistent, LLM-curated personal knowledge base structured by the PARA method — Projects, Areas, Resources, Archives.
pi-para runs as a normal Pi extension: no required daemon, no systemd, and no global QMD CLI. Search/indexing uses the embedded QMD SDK, and background capture/maintenance is coordinated by an in-process scheduler while Pi is open.
Install
pi install npm:pi-para
# or, for npm/npx setup flows:
npx pi-para@latest setup
POSIX one-liner:
curl -fsSL https://raw.githubusercontent.com/picassio/pi-para/main/scripts/install.sh | bash
Windows PowerShell:
irm https://raw.githubusercontent.com/picassio/pi-para/main/scripts/install.ps1 | iex
Restart Pi after installing or changing extension registration.
Then run diagnostics:
npx -y pi-para@latest doctor
The
pi-paracommand is only on yourPATHafter a global install (npm install -g pi-para). Afterpi install npm:pi-paraor annpxsetup, invoke the CLI withnpx -y pi-para@latest <command>instead.
What pi-para creates
Default user files:
~/.pi/para/config.jsonc # canonical pi-para config
~/.pi/para/secrets.json # optional local secrets, chmod 0600
~/.pi/wiki/ # PARA markdown wiki
~/.pi/wiki/.pi-para.sqlite # scheduler queue/history/leases
~/.pi/wiki/.qmd.sqlite # QMD SDK search index
Legacy files such as ~/.pi/wiki/config.json and ~/.config/qmd/index.yml are still read for migration/compatibility.
Core commands
Pi slash commands
| Command | Description |
|---|---|
/wiki |
Wiki status, current scope, page counts, recent log |
/wiki-search <query> |
Search the wiki |
/wiki-ingest <url-or-path-or-text> |
Ingest a source into raw/ and synthesize pages |
/wiki-capture [topic] |
Queue/capture current session knowledge |
/wiki-scope [scope] |
Show or override current project scope |
/wiki-lint [--report-only] |
Run wiki health checks |
/wiki-summarize [target] |
Summarize a page/category/all |
/wiki-settings |
Interactive settings for config/providers/scheduler |
/wiki-scheduler [status|queue|history|capture-history] |
Scheduler/capture observability |
/wiki-migrate |
Batch-migrate pages to current schema |
/wiki-project <name> <goal> |
Create/archive project pages |
CLI
Run these as pi-para <command> (global install) or npx -y pi-para@latest <command>:
pi-para setup [--yes] [--dry-run] [--local PATH]
pi-para doctor [--fix] [--json] [--test-capture-model]
pi-para tasks [--status queued|running|done|failed]
pi-para tasks show <id>
pi-para tasks history [--task NAME] [--limit N]
pi-para tasks retry [--task NAME]
pi-para status [--json]
pi-para capture-recent --hours 24
pi-para providers
pi-para providers set-secret <name> <value>
pi-para providers remove-secret <name>
The pi-para-daemon binary name is retained only to print migration guidance; its legacy commands were removed in 0.7.
Tools available to agents
| Tool | Description |
|---|---|
wiki_ingest |
Ingest URL/file/text into the wiki |
wiki_query |
Search with scope/category/freshness context |
wiki_edit |
Atomic exact oldText → newText page edits |
wiki_write |
Create/append/replace pages, or legacy edit mode |
wiki_read |
Read a page with freshness indicator |
wiki_move |
Move a page between PARA categories |
wiki_lint |
Run health checks and optional autofix |
wiki_migrate |
Batch-migrate pages to current schema |
wiki_summarize |
Summarize pages/categories/all |
Prefer wiki_edit for surgical updates to existing pages.
Configuration
Use /wiki-settings or edit:
~/.pi/para/config.jsonc
Credential refs use one of:
pi-auth:<provider> # Persisted Pi auth, e.g. ~/.pi/agent/auth.json
secret:<name> # ~/.pi/para/secrets.json
none # local/no-auth provider
Setup does not require or write API-key environment variables.
See CONFIGURATION.md for the full schema.
Search and QMD
QMD is used as an embedded SDK through qmd-engine; users do not need to install a global qmd CLI.
- BM25 keyword search works immediately.
- Embedding/rerank can be configured in
/wiki-settingsor~/.pi/para/config.jsonc. - Legacy
~/.config/qmd/index.ymlis only a compatibility fallback.
Background capture and maintenance
When Pi is running, pi-para starts an in-process scheduler. It handles:
- queued session capture,
- startup catch-up from
.completed-sessions, - index/search maintenance,
- queue/history/lease tracking in
.pi-para.sqlite.
No background OS service is required. If Pi is closed, queued work resumes on the next Pi session.
Obsidian compatibility
The wiki is plain markdown with YAML frontmatter and [[wikilinks]]. You can open ~/.pi/wiki/ as an Obsidian vault.
Development
git clone https://github.com/picassio/pi-para.git
cd pi-para
npm install
npm run check
npm test
npm run test:coverage
npm run build
npm run smoke:install
# Local setup into Pi settings
node ./dist/cli.js setup --local .
More docs:
License
MIT