privateer-agent 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
  <h1 align="center">⚓ Privateer</h1>
6
6
 
7
7
  <p align="center">
8
- <strong>A provider-agnostic terminal coding agent — bring your own model, keep your own privacy.</strong>
8
+ <strong>A privacy-first, safe-by-default distribution of the <a href="https://pi.dev">Pi</a> coding agent — bring your own model, keep your own privacy.</strong>
9
9
  </p>
10
10
 
11
11
  <p align="center">
@@ -46,8 +46,37 @@ permission gate**.
46
46
  - **Privacy you can verify, not just trust.** Confidential-enclave (TEE) inference is
47
47
  cryptographically **attested** — not a policy promise — and an **on-device PII gate**
48
48
  warns before structured personal data ever leaves your machine for an unverified model.
49
- - **Genuinely extensible.** MCP servers, sub-agents, custom commands, and skills all just
50
- files. Nothing to compile.
49
+ - **It's Pi underneath.** Privateer is a distribution of the [Pi](https://pi.dev) coding agent
50
+ every Pi extension, skill, and command works, and Privateer's own features are just extensions
51
+ you can read, swap, or build on. Nothing to compile. See [Built on Pi](#built-on-pi).
52
+
53
+ ## Built on Pi
54
+
55
+ Privateer is a **distribution of the [Pi](https://pi.dev) coding agent**
56
+ (`@earendil-works/pi-coding-agent`): Pi is the runtime, the model routing, the interactive TUI,
57
+ and the extension / skill / prompt discovery system — **everything that works in Pi works here.**
58
+ What Privateer adds is a *moat* of Pi extensions layered on top:
59
+
60
+ | Extension | What it adds |
61
+ |---|---|
62
+ | `privateer-gate` | safe-by-default permission gate + destructive-command danger filter |
63
+ | `privateer-privacy` | `pi-privacy` — TEE attestation, ZDR routing, on-device PII gate — bound to the account tier resolver |
64
+ | `privateer-account` | `/signin` billed inference against a Privateer account (device flow) |
65
+ | `privateer-posture`, `privateer-tools` | live attestation shield + Privateer tool pack |
66
+ | `rpiv-web-tools` | private-by-default web search (self-hosted SearXNG, no WebView) |
67
+ | `pi-mcp-adapter`, `pi-subagents` | MCP servers · bounded parallel sub-agents |
68
+
69
+ They're ordinary Pi extensions — inspect them, replace them, or build your own alongside.
70
+ **Extend by discovery:** drop an extension into `~/.privateer/agent/extensions/` (move the home
71
+ with `PRIVATEER_HOME`), add a skill or prompt beside it, or list an npm/git package under
72
+ `packages` in `~/.privateer/agent/settings.json` — Pi auto-loads them on next launch, right next
73
+ to Privateer's own. Any extension from the Pi ecosystem loads the same way. (There's no CLI flag
74
+ for this — discovery is the entry point.)
75
+
76
+ **The floor you can't lower is the safety gate.** While it's loaded, its block on destructive
77
+ shell commands, secret exfiltration, and plan-mode escapes sits *above* every relaxation —
78
+ `bypass` mode, the approval allowlist, even a phone-approved remote turn can't fire them
79
+ silently. The moat is swappable; the floor under it holds.
51
80
 
52
81
  ## Highlights
53
82
 
@@ -126,6 +155,7 @@ export OLLAMA_BASE_URL=http://localhost:11434/v1 # local, keyless
126
155
  export NEAR_AI_API_KEY=... # verifiable TEE inference (cloud.near.ai)
127
156
  export TINFOIL_API_KEY=... # verifiable TEE inference (tinfoil.sh)
128
157
  export VENICE_API_KEY=vapi_... # no-retention inference
158
+ export PRIVATEER_API_KEY=sk-priv-... # Privateer developer API (privateer.pro); or /signin instead
129
159
  ```
130
160
 
131
161
  Pick a model with **`/model`** (browse each configured provider's live catalog) or pass one
@@ -198,14 +228,17 @@ and protected files (`.env`, shell rc files…) are guarded — the gate is neve
198
228
 
199
229
  ## Extend it
200
230
 
201
- - **MCP servers** declare them and their tools become first-class, gated like the rest
202
- (local stdio, or remote HTTP with interactive OAuth).
203
- - **Sub-agents** — delegate investigations to bounded parallel agents that run under the same
204
- permission gate.
231
+ Everything below is a **Pi extension** loaded by discovery (see [Built on Pi](#built-on-pi))
232
+ drop your own into `~/.privateer/agent/extensions/` and it loads the same way, gated like the rest.
233
+
234
+ - **MCP servers** (`pi-mcp-adapter`) — declare them and their tools become first-class, gated
235
+ like the rest (local stdio, or remote HTTP with interactive OAuth).
236
+ - **Sub-agents** (`pi-subagents`) — delegate investigations to bounded parallel agents that run
237
+ under the same permission gate.
205
238
  - **Routines** — saved tasks the daemon runs unattended; ask the agent to schedule work and
206
239
  approve it once.
207
- - **Web tools** — private-by-default web search/fetch with pluggable backends (self-hosted
208
- SearXNG for fully private search).
240
+ - **Web tools** (`rpiv-web-tools`) — private-by-default web search/fetch with pluggable backends
241
+ (self-hosted SearXNG for fully private search).
209
242
 
210
243
  ## Develop
211
244
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "privateer-agent",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "Privateer — a provider-agnostic, safe-by-default terminal coding agent with TEE/Tinfoil attestation, rebuilt on the Pi toolkit. Bring your own model across 20 providers.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -59,7 +59,7 @@
59
59
  "@noble/curves": "^1.9.7",
60
60
  "@noble/hashes": "^1.7.1",
61
61
  "pi-mcp-adapter": "^2.11.0",
62
- "pi-privacy": "^0.2.0",
62
+ "pi-privacy": "^0.3.0",
63
63
  "pi-subagents": "^0.34.0",
64
64
  "picomatch": "^4.0.4",
65
65
  "tsx": "^4.16.0",
@@ -1,9 +1,10 @@
1
- // The provider landscape — the single map of how each of privateer's 21 providers
1
+ // The provider landscape — the single map of how each of privateer's 22 providers
2
2
  // becomes reachable under Pi. Written after verifying (2026-07-07) that:
3
3
  // - pi-ai ships STATIC model catalogs for its 14 built-in providers, so they're
4
4
  // selectable once a key is present — privateer emits NO models.json entry for them;
5
- // - the `pi-privacy` extension registers the 5 privacy providers (tinfoil, nearai,
6
- // venice, ollama, custom) at load — privateer emits NO entry for them either;
5
+ // - the `pi-privacy` extension registers the 6 privacy providers (tinfoil, nearai,
6
+ // venice, ollama, custom, privateer-api) at load — privateer emits NO entry for
7
+ // them either;
7
8
  // - so the ONLY provider this generator must emit is `qwen` (config-only,
8
9
  // non-privacy, no built-in catalog), and `privateer` (the account OAuth channel)
9
10
  // is handled in code, not config (Phase 4).
@@ -65,6 +66,9 @@ export const PROVIDERS: ProviderEntry[] = [
65
66
  { id: "tinfoil", source: "pi-privacy" },
66
67
  { id: "venice", source: "pi-privacy" },
67
68
  { id: "custom", source: "pi-privacy" },
69
+ // Public developer-API surface (sk-priv-… key). Registered by the pi-privacy
70
+ // extension like the others; distinct from the in-app `privateer` account channel.
71
+ { id: "privateer-api", source: "pi-privacy" },
68
72
  { id: "privateer", source: "account" },
69
73
  ];
70
74