Provider access
Use /providers to grant provider access and /model to select the provider, model, and reasoning effort. Provider credentials can be stored in the encrypted /vault.
PFTerminal 0.1.19 · Rust TUI · based on the open-source Codex CLI
One terminal. Every model. Your keys, your wallet, your chain of command.
PFTerminal is a crypto-native AI services terminal based on the open-source Codex CLI that routes across six built-in providers, assigns a provider, model, and reasoning effort to each spawned agent, and lets you buy prepaid inference in USDC from a Solana wallet you hold.
01 / INSTALL
curl -fsSL https://github.com/agtico/PfTerminal/releases/latest/download/install.sh | shcurl -fsSL https://github.com/agtico/PfTerminal/releases/latest/download/install.sh | shAlso available as PFTerminal-aarch64-apple-darwin.dmg and PFTerminal-x86_64-apple-darwin.dmg.
Invoke-RestMethod https://github.com/agtico/PfTerminal/releases/latest/download/install.ps1 | Invoke-ExpressionUse the native PowerShell installer. PowerShell's curl alias is unsupported.
PFTerminal is a Post Fiat product. Its source is published under the agtico GitHub organisation and its npm package under the @agticorp scope. Creates a pfterminal command. Does not touch an existing codex command. Stores all state in $HOME/.pfterminal.
@agticorp/pfterminalbun add -g @agticorp/pfterminalPFTerminal-aarch64-apple-darwin.dmg · PFTerminal-x86_64-apple-darwin.dmgpfterminal --yolo launches without approval prompts.Scroll terminal horizontally →
/providers grants access; /model selects provider, model, and reasoning effort; Nazgul supervises Trolls and Orcs; the vault, wallet, GPU, and Task Node surfaces remain separate commands.02 / MODELS
Ambient GLM 5.2 is the default model path. /providers grants provider access; /model selects the provider, the model, and the reasoning effort. A spawned agent may differ from its parent on all three.
Scroll table horizontally →
| # | Provider id | Display name | Base URL | Credential | Wire API |
|---|---|---|---|---|---|
| 1 | openai | OpenAI | https://chatgpt.com/backend-api/codex | Account login | Responses |
| 2 | ambient | Ambient | https://api.ambient.xyz/v1 | AMBIENT_API_KEY | Chat Completions |
| 3 | zai | Z.AI | https://api.z.ai/api/coding/paas/v4 | ZAI_API_KEY | Chat Completions |
| 4 | openrouter | OpenRouter | https://openrouter.ai/api/v1 | OPENROUTER_API_KEY | Chat Completions |
| 5 | baseten | Baseten | https://inference.baseten.co/v1 | BASETEN_API_KEY | Chat Completions |
| 6 | vercel | Vercel AI Gateway | https://ai-gateway.vercel.sh/v1 | AI_GATEWAY_API_KEY | Responses |
Kimi Code, Anthropic / Claude Plan, and the PfTerminal Plan are credentialed through /providers. A GPU endpoint you rent yourself appears in /model once it reports READY. None of these are counted among the six built-in providers.
Adding a credential does not select a provider. If a model is unavailable, /providers shows authentication state and /model shows catalog visibility — before anything is reconfigured or reset.
OpenAI Ambient Z.AI OpenRouter Baseten Vercel AI Gateway Anthropic Moonshot Kimi Vast.ai RunPod Solana Post Fiat Task Node
These are the systems PFTerminal talks to, not partners, customers, or endorsers.
The model is a per-agent decision, not a per-company one.
03 / HIERARCHY
/spawn creates managed work entities with an explicit role, model, harness, and parent/child relationship. Agents do not exist as isolated tabs with no visible chain of command.
Every spawned agent can be given a different provider, model, and reasoning effort than its parent.
/orchestrate attaches a lasting supervisory assignment to an existing worker or pane — attach, pause, resume, extend, test/fire, detach. /spawn creates the crew; /orchestrate manages it.
Spawn tools serialize as plain functions rather than ToolSpec::Namespace, so the hierarchy survives providers whose namespace_tools capability is false.
PFTerminal runs real claude -p headless turns against a local Anthropic Messages bridge that translates Claude Code Messages requests to the chosen provider using the vault-held key, then returns Claude-compatible JSON/SSE. The Ambient parity workflow suite passed on 2026-06-25. Every other profile's status is listed in the shipped, experimental, and not-built matrix below.
04 / CUSTODY
Two separate stores, deliberately. The vault stores service credentials. The wallet manages a signing key, on-chain balances, and PfTerminal Plan linkage.
Masked entry for provider keys and arbitrary secrets. /vault list and /vault show <label> are metadata-only views. /vault credential add refuses an inline secret and opens the secure modal. Copy-to-clipboard never prints the secret into chat.
Release 0.1.19 hardened recovery: an existing vault validates every available key source against its own ciphertext and never generates or overwrites a key during recovery. Stale file-fallback keys can no longer shadow a valid OS-keyring key, and every failure path preserves ciphertext.
A local Solana-mainnet wallet holding SOL and canonical USDC. Create or restore a wallet, save the recovery material from the secure view, and set a passcode. Recovery material is never requested or repeated in chat.
Unlock grants signing capability to the current TUI for one action or the selected duration. Lock revokes it. Remove wallet from this device removes local custody and the local plan credential; it does not move on-chain funds and does not cancel a paid period.
Scroll diagram horizontally →
The vault holds your credentials. The wallet holds your money. Neither holds you.
05 / GPU
/gpu rents third-party capacity on Vast.ai and RunPod. PFTerminal does not provide a free GPU pool; the marketplace account you connect is the account that gets billed.
PFTerminal then searches compatible offers and shows a final billable confirmation.
READYOnly READY means the rented model is available in /model. /gpu is the authoritative cross-process view of active or potentially billable rentals and estimated spend.
Scroll diagram horizontally →
/model after all six provisioning stages complete and the endpoint reports READY. The maximum hourly price, maximum total spend, and duration are set before PFTerminal searches for offers.Stop serving removes the endpoint from model selection, and provider billing continues. Terminate rental requests provider cleanup; treat billing as unresolved until PFTerminal reports provider-confirmed termination. Exiting PFTerminal is never a substitute for terminating a rental.
Scroll table horizontally →
| Provider | Recipe | Endpoint boundary |
|---|---|---|
| Vast.ai | 4×H200, SGLang TP4 | Token-authenticated SGLang endpoint behind a verified HTTPS tunnel |
| RunPod | 2×H200, pinned SGLang TP2 | RunPod authenticated HTTPS proxy boundary |
| Vast.ai | Official zai-org/GLM-5.2-FP8 weights | Served and qualified end to end |
06 / PERFORMANCE
Native non-OpenAI turns were slow for fixable local reasons. Here is exactly what was measured, what changed, and what it measures at now.
Scroll table horizontally →
| Measurement | Before | After |
|---|---|---|
| Local client and provider setup, resumed native Z.AI turn | ~9.5 s | ~1.6 s |
| Large resumed thread, fresh process, Vercel Responses — wall clock | — | 4.05 s |
| ↳ local setup / provider request and stream | — | ~1.6 s / ~1.6 s |
Removed the hot-path vault fingerprint read, cached provider auth in the model provider, and cached decrypted local secrets inside the secrets backend.
Responses requests now set store: true, persist ModelResponseCompleted, restore the last response id on resume, and send only the incremental input.
Method and raw report: docs/features/native-provider-performance.md. Scope and method: measured 2026-06-28 on the native-provider-performance bench (read the report). Both figures are fresh-process runs against a large resumed thread, not cold first turns. The Vercel figure is corroborated by the dumped request: store: true, previous_response_id populated, input_len: 1, input_chars: 119. These are self-measured, single-configuration numbers on one machine — not a cross-vendor benchmark — and they are the only performance figures published on this page.
07 / RUNTIME
PFTerminal keeps the Codex CLI's local coding-agent runtime and makes provider access, credential storage, packaging, and product surfaces first-class. The changes are code-level, not prompt text.
performance report provider config slash commands changelog 0.1.19 Apache-2.0 licence releases live plan catalogue
Every number, provider row, command, price, and date on this page comes from one of these files. They are public; read them before you trust us.
exec modeAGENTS.md project instructions$HOME/.pfterminal/skills/.system/$HOME/.agents/skills/<repo>/.agents/skills/.codex-plugin/plugin.json manifest/docs browses the bundled documentation inside the terminal/status and /usage report session and allowance state08 / TASK NODE
Task Node is the agent-side work ledger. Link an account, inspect tasks, submit evidence, answer verification, read rewards and balances, and open Task Node chat or context — without leaving the terminal.
/tasknode link link a GitHub-backed Task Node account/tasknode status account and session status/tasknode tasks [tab] tasks; defaults to outstanding/tasknode outstanding outstanding tasks/tasknode verification tasks awaiting verification/tasknode refused refused tasks/tasknode rewarded rewarded tasks/tasknode task <id> actions for one task/tasknode request open the request prompt/tasknode request <text> submit a request inline/tasknode requests active requests/tasknode context open Task Node context/tasknode chat open Task Node chat/tasknode chat <text> submit a chat message/tasknode balance read-only balance/tasknode rewards recent rewards/tasknode logout end the Task Node session09 / PAYMENT
Use /providers to grant provider access and /model to select the provider, model, and reasoning effort. Provider credentials can be stored in the encrypted /vault.
Buy a prepaid PfTerminal Plan from /wallet: unlock the wallet, review the tier and exact USDC amount, then confirm. After activation, the plan's models appear in /model.
Vast.ai and RunPod bill the marketplace account. PFTerminal requires a max hourly USD price, max total USD spend, and duration in whole minutes before it searches compatible offers.
Scroll table horizontally →
| Plan | Price | Term | Tokens / month | Tokens / week | Max output tokens |
|---|---|---|---|---|---|
starter | 1 USDC | 1 month | 1,000,000 | 250,000 | 32,768 |
basic | 20 USDC | 1 month | 20,000,000 | 5,000,000 | 32,768 |
power | 50 USDC | 1 month | 50,000,000 | 12,500,000 | 32,768 |
pro | 200 USDC | 1 month | 200,000,000 | 50,000,000 | 32,768 |
Settlement is canonical USDC on Solana mainnet. Plan model allowlist as published by the gateway: z-ai/glm-5.2, moonshotai/kimi-k2.7-code — this describes plan scope, not a complete PFTerminal model roster. /wallet is authoritative at purchase time.
The exact tier and USDC amount are shown in /wallet before confirmation.
You buy a period up front. There is no recurring charge to cancel.
The signing key stays on your machine, behind a passcode you set.
Disconnect the plan credential and keep both the wallet and the paid period.
10 / COMMANDS
The index below contains 24 product-specific command entries. Variants such as /spawn status are counted as entries. The Task Node forms remain grouped under /tasknode.
/model select provider, model, and reasoning effort/providers manage provider credentials and account login/vault open the encrypted credential vault menu/vault list list credential labels and metadata/vault show <label> inspect one credential's metadata/vault credential add masked secure-entry flow/wallet wallet, balances, and PfTerminal Plan/gpu rent, monitor, and terminate GPU capacity/spawn open managed Nazgul, Troll, and Orc orchestration/spawn status show the hierarchy and worker status/spawn nazgul bind an existing user pane as the root/spawn troll create a Troll under a parent/spawn orc create an Orc under a parent/orchestrate attach persistent supervision to a worker/orchestrate status show supervisory assignments/panes switch user, Claude Code, and spawned panes/agent switch the active native agent thread/tasknode Task Node menu and its listed forms/skills browse bundled, repo, user, and plugin skills/docs browse bundled documentation in the terminal/status session, model, permissions, and token config/usage provider allowance and reset information/ps inspect background terminals/stop stop all background terminals11 / STATUS
Publishing the third column is the point. Everything in it exists as a specification or a backlog item, not as a feature you can use today.
/spawn Nazgul, Troll, and Orc orchestration/orchestrate persistent supervision/wallet and PfTerminal Plan purchase/gpu rental on Vast.ai and RunPod/tasknode, /docs, skills, plugins, MCP/subagents diagnostics viewInstall PFTerminal 0.1.19 on Linux, macOS, or Windows. Apache-2.0, public repository, written in Rust.