@techhaus/pi-frank
Native F.R.A.N.K provider for Pi Coding Agent
Package details
Install @techhaus/pi-frank from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:@techhaus/pi-frank- Package
@techhaus/pi-frank- Version
0.1.3- Published
- Sep 18, 2026
- Downloads
- 457/mo · 10/wk
- Author
- eurothrottle
- License
- MIT
- Types
- extension
- Size
- 146.3 KB
- Dependencies
- 0 dependencies · 2 peers
Pi manifest JSON
{
"extensions": [
"./dist/index.js"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
F.R.A.N.K for Pi Coding Agent
This Pi package adds one native provider and model: frank/frank, shown as F.R.A.N.K.
It does not replace, hide, or reconfigure any of Pi's existing providers or models.
Install
Install the public package with Pi's native package manager:
pi install npm:@techhaus/pi-frank
This release supports Pi Coding Agent 0.84.4–0.84.x and 0.85.x on Node.js 22.19.0 or newer, including ordinary unmodified Pi installations and API-compatible custom builds.
Start or restart Pi, then use Pi's built-in /login flow and choose F.R.A.N.K.
Pi displays a short device code and the F.R.A.N.K approval URL. Complete approval in
your browser. Never paste a Venice API key, F.R.A.N.K token, or recovery code into Pi.
After approval, Pi automatically makes frank/frank the active model and saves that
selection without replacing unrelated settings. If you deliberately select a model while
login is pending, your choice takes precedence. Later sessions continue using F.R.A.N.K
until you choose a different model.
Approval requires eligible TECH HAUS Premium membership, current Ethical Use Policy consent, Discord-confirmed eligibility, and a Venice API key already configured through F.R.A.N.K. Venice usage is separate from TECH HAUS membership and remains the member's responsibility.
Before login, F.R.A.N.K is available in /login. After login, frank/frank is available
in /model alongside every normal Pi model. Selecting another model bypasses F.R.A.N.K;
selecting frank/frank routes the turn through the full F.R.A.N.K service.
When Pi thinking is enabled, Pi's native thinking area shows concise F.R.A.N.K-authored field notes grounded in the current objective and recorded native actions. F.R.A.N.K's server-side voice direction varies these notes by task and suppresses repeated delivery patterns; the connector contains no canned stage sayings. These notes are separate from tool results and final verification, and are not raw model chain-of-thought. The service filters hidden prompts, credentials and unsafe narration before delivery. If narration is unavailable, local coding continues without interruption. With Pi thinking disabled, these field notes remain hidden and no narration call is made.
Update
Re-run the same command to install the latest published version:
pi install npm:@techhaus/pi-frank
Pi requires static per-token prices in model metadata, while F.R.A.N.K can use multiple Venice stages and models in one turn. The package therefore reports the authoritative usage returned by F.R.A.N.K when available; a zero or partial Pi cost display is not a claim that Venice usage is free. Members remain responsible for their Venice usage.
For a non-production or self-hosted service, set FRANK_URL to its HTTPS origin before
login. Plain HTTP is accepted only for localhost and 127.0.0.1 testing.
Connection commands
/frank statuschecks the configured connection./frank deviceslists authorized F.R.A.N.K device grants./frank disconnectrevokes this device's server grant.
/frank disconnect never edits Pi's credential store. After revocation, use Pi's built-in
/logout command and choose F.R.A.N.K to remove the local credential safely.
Troubleshooting
- F.R.A.N.K is missing: confirm the supported Pi and Node.js versions, re-run the
installation command, and restart Pi. Use
/loginand choose F.R.A.N.K before looking forfrank/frankin the authenticated model list. - Login is denied or expires: check your membership and service eligibility in the
browser, then run
/loginagain for a new code. Device authorization lasts at most 15 minutes. Never send a device code, token, or Venice key to support. - The service is unreachable or a request times out: check your network and any
explicit
FRANK_URLconfiguration, then retry. Device, refresh, and connection-command requests time out after 30 seconds. A timed-out login needs a new/loginattempt; an interrupted coding turn can be retried in the current Pi session. - Login succeeds but the model stays unchanged: a model you chose during login wins.
Pi 0.85.1 can also show a default-model warning after F.R.A.N.K is already selected.
Check Pi's active model indicator; use
/modelto selectfrank/frankif needed. - The default could not be saved: check that Pi's
settings.jsonis valid JSON and writable, then selectfrank/frankwith/model. The connector leaves malformed settings intact and reports when persistence fails. - The session is no longer authorized: use
/frank status. For an expired or revoked connection, use/logoutfor F.R.A.N.K and reconnect with/login. If disconnect times out, server revocation is unconfirmed; retry/frank disconnectbefore local logout. - Baseline tests or source inventory cannot proceed: follow the connector's recovery message. Keep the existing source intact until a requested baseline has run. Enable a local shell or test tool when it is missing, and review failed tool output before retrying.
- A run reaches its tool-call limit or stops a repeated cycle: review the work already completed and continue with a smaller remaining task. Do not discard unrelated changes to restart a run.
- The configured model chain is unavailable: retry later or check Discord for service status. The service administrator manages the underlying models; you do not need to select a Venice model in Pi.
For help, use the TECH HAUS Discord community. Include the connector, Pi, and Node.js versions, your operating system, the public error message, and the steps that failed. Do not share authentication files, device codes, environment dumps, or private repository content. npm remains the installation and update channel; no GitHub account is required.
Security model
Pi stores only the short-lived access token, rotating refresh token, opaque encrypted
credential capsule, and grant identifiers returned by F.R.A.N.K. The member's Venice key
remains sealed inside the server-produced capsule. The package never logs or prints those
values and never reads or writes auth.json directly.
The connector registers each installation with a generic platform label. It does not transmit the machine hostname or local username.
Use of F.R.A.N.K is governed by TECH HAUS membership terms and the Ethical Use Policy.
License and service access
This connector is available under the MIT License. That license applies only to the connector software in this package. It does not provide TECH HAUS membership, access to the hosted F.R.A.N.K service, Venice model usage, rights to F.R.A.N.K or TECH HAUS names and marks, or any other hosted-service entitlement. Those remain governed by their applicable terms and eligibility requirements.
Announcements and member support are provided through the TECH HAUS Discord community.
Source code
The complete TypeScript connector source is included in the npm package under src/.
It contains only the public Pi integration; F.R.A.N.K's proprietary server-side material is
not distributed.