The full Floe platform from your terminal — setup, metered calls, agents, keys, budgets, policies, billing, funds, and phone. Built for humans and for AI coding agents.
Floe tells you what every AI call really costs: it costs each call the moment it ends across every vendor — telephony, STT, LLM, TTS, tools — on one ledger, ties the spend to the client and campaign, and shows your margin per contract, so you can bill your own customers off those actuals and price the next deal on real numbers. This CLI drives all of it from your terminal.
npx @floelabs/cli initfloe init authenticates with your developer key, creates (or selects) an agent, mints its
runtime key into your OS keychain, and ends with the only thing that matters — the base-URL
swap for your existing OpenAI-compatible client, key already filled in:
from openai import OpenAI
client = OpenAI(base_url="https://credit-api.floelabs.xyz/v1", api_key="floe_…")Every response carries X-Floe-Cost-USDC. One key meters chat, embeddings, speech and
transcription across 15+ vendors — one bill, in USDC.
npm install -g @floelabs/cli
floe init # authenticate, set up an agent + key
floe status # am I set up? balance, budgets, active agent
floe chat "hello" # one metered call, cost printed
floe test --voice # STT → LLM → TTS: three legs, one key, one billfloe help <command> prints each command's full usage and flags.
| Command | What it does |
|---|---|
floe init |
Authenticate, set up an agent + key, print the base-URL swap |
floe status |
Am I set up? Balance, budgets, active agent and key |
floe use |
Switch this machine to another agent (keys kept per agent) |
floe test |
Make one real metered call and print its cost |
| Command | What it does |
|---|---|
floe chat |
Send a prompt through the metered gateway |
floe embed |
Create embeddings through the metered gateway |
floe speak |
Text-to-speech through the metered gateway (writes a file) |
floe transcribe |
Transcribe an audio file through the metered gateway |
floe pay |
Call any x402 vendor through the metered proxy |
| Command | What it does |
|---|---|
floe agents |
list | get | create | pause | resume | close | lock — agent fleet |
floe keys |
list | create | revoke | rotate — agent runtime keys |
floe devkeys |
list | create | revoke | rotate — developer (floe_live_) keys |
floe budget |
show | set | clear | reserve — cap agent spend |
floe policy |
list | create | update | revoke | reset | chain | test — spend policies |
floe allowlist |
show | set | add | remove — merchant allowlist |
floe credit |
bounds | open — credit-line inspection and opt-in open |
| Command | What it does |
|---|---|
floe activity |
Unified spend/activity feed with filters |
floe usage |
Spend series | summary | coverage — usage analytics |
floe ledger |
Cross-source spend ledger, grouped |
floe billing |
mtd | invoice | export | charges — billing and exports |
floe account |
show | rename — account identity |
floe team |
members | invite | revoke-invite | set-role | remove — team roster |
| Command | What it does |
|---|---|
floe funds |
withdraw | move | list | address | topup | sessions — move money |
floe cashout |
start | list | status | cancel — cash out USDC to fiat |
| Command | What it does |
|---|---|
floe webhooks |
list | create | events | get | pause | enable | delete | test | rotate-secret | deliveries | logs |
floe models |
Model catalog with modalities and pricing |
floe estimate |
Estimate a call cost without spending |
floe providers |
list | set | enable | disable | remove — BYOK provider keys |
floe phone |
search | buy | list | release | calls | usage | voice | test-call — Floe Phone |
floe actions |
list | report — cost-per-action rollups and outcomes |
floe orchestrators |
connect | list | rotate | enable | disable | remove — Vapi/Retell/Bland |
floe vendors |
status — live-verified vendor probes |
Floe has a developer key (floe_live_…, from the dashboard)
for managing agents, and per-agent runtime keys (floe_…) that the gateway meters. The CLI
stores both in your OS keychain and always sends the right one — you never pick. On systems
without a usable keychain (headless Linux, some containers) it falls back to
~/.config/floe/credentials.json with 0600 permissions and tells you so.
Runtime keys are stored per agent, so floe use <agent> switches this machine between
agents without re-minting keys — the first switch to an agent mints its key once (agents cap
at 5 keys), and every switch after that reuses it.
--jsonon every command — machine-readable output for CI and coding agents.--yesskips confirmation on destructive or money-moving commands (agents close,keys revoke,funds withdraw, …). Non-interactive runs require it — a script never destroys something by default.- Exit codes:
0ok ·1error ·2usage ·4auth ·5payment/budget. --api-url <url>overrides the API base on any command.
Headless / CI: set FLOE_API_KEY (developer key) and/or FLOE_AGENT_KEY (runtime key);
env vars always win over the keychain. FLOE_API_URL overrides the API base.
The CLI is a first-class surface for coding agents:
- Every command takes
--jsonand emits stable, machine-readable JSON — parse it instead of scraping human output. (Metered commands wrap the API body withmodel/costfields, and filtered lists are reconstructed, so it's a stable CLI schema, not always the raw API body.) - Nothing hangs on a prompt: non-interactive destructive calls fail fast with exit 2 unless
--yesis passed. - Bootstrap without a keychain: export
FLOE_API_KEY(andFLOE_AGENT_KEYfor metered calls) and every command works immediately — noinit, no stored state. - Exit codes are stable and meaningful — branch on
4(re-auth) and5(out of budget).
pnpm install
pnpm build # tsup → dist/
pnpm typecheck
pnpm test
node dist/bin.js --helpMerging to main publishes to npm automatically when package.json has a new version.
MIT © Floe Labs