@crossgen-ai/praxis-connectors
Praxis connectors engine — a box-resident MCP layer shared by the praxis harness, the Praxis app's serve, and scheduled runs. One store per box; sign-in relayed by whichever face the human is looking at.
Package details
Install @crossgen-ai/praxis-connectors from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:@crossgen-ai/praxis-connectors- Package
@crossgen-ai/praxis-connectors- Version
0.1.0- Published
- Aug 14, 2026
- Downloads
- 106/mo · 49/wk
- Author
- mtjanney2
- License
- MIT
- Types
- extension
- Size
- 49.8 KB
- Dependencies
- 1 dependency · 0 peers
Pi manifest JSON
{
"extensions": [
"./extension/index.js"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
@crossgen-ai/praxis-connectors
The Praxis connectors engine: a box-resident MCP layer shared by the
praxis harness, the Praxis desktop app's serve, and scheduled runs.
Decided in Praxis-UI AD-0015/SPEC-0004 and harness ADR-0151 — this
package is the neutral ground both sides depend on so no code ever crosses
the app↔harness seam.
The shape
- One store per box —
$PRAXIS_CONNECTORS_HOME(default~/.praxis-connectors):connectors.json(registry, never secrets),auth/<id>.json(tokens,0600),cache/<id>.json(tool lists). Sharing is the file: whoever writes, everyone sees. - Engine face (
require('@crossgen-ai/praxis-connectors')) — the librarypraxis servelinks: add/remove/list, probe,callTool, the OAuth relay (authStart→ URL out,authFinish← code in), and proactive token refresh. - Extension face (
…/extension) — a pi extension registering every cached connector tool asmcp__<connector>__<tool>. Loaded by interactive harness sessions (via a shim that keeps the worker gate) and by scheduled runs (pi -e <path>), scoped per run withPRAXIS_CONNECTORS_ONLY=id1,id2. - MCP client: the official
@modelcontextprotocol/clientv2 — stdio + streamable HTTP, automatic protocol-version negotiation, spec OAuth.
Sign-in (the relay)
The box starts the flow (PKCE verifier never leaves it), the app shows the
authorization URL, the human finishes in their own browser, and the code
returns either through serve's callback route or a paste-back field —
authFinish is the same door for both. Tokens are born, stored (0600),
and refreshed on the box; the serve process owns proactive refresh so
connectors stay warm with the owner's Mac off.
Tests
npm test — fully hermetic: a fake stdio MCP server, a fake streamable
HTTP MCP server, and a fake OAuth authorization server (PKCE + refresh +
rotation). The fakes are exported as
@crossgen-ai/praxis-connectors/test-helpers so consumers' suites
(Praxis-UI serve + e2e) drive the identical seam.
Catalog
Ships a starter catalog spanning both OAuth families: Gmail, Google Calendar, Google Drive (Google's official Workspace remote MCP endpoints — bring your own OAuth client; Google issues no dynamic registration), and Outlook Mail, Microsoft Calendar, OneDrive (the ms-365 stdio server on the box, which manages its own Microsoft login).