commit b3aa2155d3d90af263c0c27c4954df30f2f1184d Author: syntaxbullet Date: Thu Jul 23 19:17:31 2026 +0200 Scaffold isolated Pi instance diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9d9e73f --- /dev/null +++ b/.gitignore @@ -0,0 +1,16 @@ +# Credentials and local trust decisions +auth.json +trust.json + +# Session history and generated model metadata +sessions/ +models-store.json + +# Pi-managed package installations +npm/ +git/ + +# Runtime files +pi-debug.log +*.log +.DS_Store diff --git a/README.md b/README.md new file mode 100644 index 0000000..3d9169c --- /dev/null +++ b/README.md @@ -0,0 +1,67 @@ +# Isolated Pi instance + +This directory is the user/config directory for an isolated [Pi coding agent](https://pi.dev) instance. The `launch` script sets `PI_CODING_AGENT_DIR` to this directory before invoking the installed `pi` executable. + +## Start Pi + +From this directory: + +```bash +./launch +``` + +The launcher is relocatable and can be called while working in another project: + +```bash +/path/to/kimiko-agent/launch +``` + +Pi keeps that project's working directory while storing this instance's credentials, settings, sessions, packages, and global resources here. + +To use the environment variable directly instead: + +```bash +export PI_CODING_AGENT_DIR="$(pwd -P)" +pi +``` + +To make the setting directory-local with `direnv`, create an untracked `.envrc` containing: + +```bash +export PI_CODING_AGENT_DIR="$PWD" +``` + +## Authenticate and configure + +```text +/login Manage credentials; writes auth.json here +/settings Change common settings +/model Select a model +``` + +Or use provider API-key environment variables before starting Pi. `auth.json`, trust decisions, sessions, generated model metadata, and installed package contents are intentionally ignored by Git. + +## Layout + +- `settings.json` — instance-wide Pi settings +- `models.json` — custom providers/models +- `keybindings.json` — keybinding overrides +- `extensions/` — global extensions for this instance +- `skills/` — global skills for this instance +- `prompts/` — global prompt templates for this instance +- `themes/` — global themes for this instance +- `sessions/` — generated conversation history +- `npm/`, `git/` — Pi-managed package installations +- `auth.json` — generated credentials (secret; never commit) +- `trust.json` — generated project trust decisions + +Install a package into only this instance by using the launcher: + +```bash +./launch install npm: +./launch list +``` + +## Isolation boundary + +`PI_CODING_AGENT_DIR` isolates Pi's user config, credentials, sessions, model config, and managed packages from `~/.pi/agent`. It is not an OS sandbox. Pi can still use inherited environment variables and shell/user configuration, and—when trusted—load project-local `.pi` resources. Pi also discovers the cross-agent global skill location `~/.agents/skills`; use `--no-skills` when you need to suppress all automatic skill discovery for a run. diff --git a/extensions/.gitkeep b/extensions/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/keybindings.json b/keybindings.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/keybindings.json @@ -0,0 +1 @@ +{} diff --git a/launch b/launch new file mode 100755 index 0000000..82cd811 --- /dev/null +++ b/launch @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +set -euo pipefail + +instance_dir="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd -P)" +export PI_CODING_AGENT_DIR="$instance_dir" + +exec "${PI_BIN:-pi}" "$@" diff --git a/models.json b/models.json new file mode 100644 index 0000000..87b07bc --- /dev/null +++ b/models.json @@ -0,0 +1,3 @@ +{ + "providers": {} +} diff --git a/prompts/.gitkeep b/prompts/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/settings.json b/settings.json new file mode 100644 index 0000000..b3f0c0f --- /dev/null +++ b/settings.json @@ -0,0 +1,5 @@ +{ + "defaultProjectTrust": "ask", + "enableInstallTelemetry": false, + "packages": [] +} diff --git a/skills/.gitkeep b/skills/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/themes/.gitkeep b/themes/.gitkeep new file mode 100644 index 0000000..e69de29