fmfrontier models cli
A universal model interface

Frontier
models.
One CLI.

ChatGPT, OpenAI, Claude, Gemini, MiniMax, GLM, Ollama, and compatible gateways. API keys or vendor-owned login bridges. One command.

v0.49.0 livefirst-party hosted254 tests passinglive MVP verifiedcomparison cost preflight
download wheel ↓ source ↓
Python 3.11+ · Windows, macOS, Linux · zero runtime dependencies · MIT · first-party hosted · step-by-step setup · SHA-256 checksums · release manifest
~/project — fm
ready
From zero to first answer

Install. Connect.
Ship.

This is the complete supported path. Copy the commands, connect one provider, verify it, and start. No hidden repository setup required.

Install the public release.

Python 3.11 or newer is the only runtime requirement. The wheel has no third-party runtime dependencies.

$ python3 -m pip install --upgrade https://site-2-31-54-33.sslip.io/frontier-models-cli/downloads/frontier_models_cli-0.49.0-py3-none-any.whl

Windows PowerShell: replace python3 with py. Then confirm the installed version.

$ fm --version $ fm setup

Connect one provider.

fm setup detects usable routes and prints the exact local check, bounded live proof, and first prompt. Or focus it on one connection:

$ fm setup openai # ChatGPT login or API $ fm setup anthropic # Claude login or API $ fm setup google # Gemini API $ fm setup minimax # MMX login or API

Credentials stay in the provider's environment or vault; fm never copies them.

ChatGPT via CodexSubscription login · readynpm i -g @openai/codex
fm auth login openai
fm "Hello" -m chatgpt/default
Official setup ↗
Claude via Claude CodePro / Max login · readynpm i -g @anthropic-ai/claude-code
fm auth login anthropic
fm "Hello" -m claude/default
Official setup ↗
MiniMax via MMXToken Plan login · readynpm i -g mmx-cli
fm auth login minimax
fm "Hello" -m minimax-cli/default
Official setup ↗
Gemini direct APIAPI key · readyexport GEMINI_API_KEY="…"
fm "Hello" -m google/gemini-3.8-flash
Create a key ↗
OpenAI / Anthropic APIsDirect API · readyexport OPENAI_API_KEY="…"
export ANTHROPIC_API_KEY="…"
GLM / MiniMax APIsDirect API · readyexport ZAI_API_KEY="…"
export MINIMAX_API_KEY="…"
Gemini CLI bridgeEnterprise / API-key CLI · explicit routenpm i -g @google/gemini-cli
gemini
fm "Hello" -m gemini-cli/default
Google AntigravityIndividual subscription · not tethered yet

Google moved individual subscription access here in June 2026. fm is waiting for a hard output ceiling and isolated headless contract; direct Gemini API access works today.

Prove it actually works.

$ fm auth $ fm ready $ fm models --live $ fm ready --live

fm ready checks the installation, route, and provider setup without inference. fm ready --live sends one 16-output-token-capped prompt and prints MVP VERIFIED only after an actual provider response.

Bring real work.

$ fm "Review this project" -f . $ fm "Find renewal risks" --pdf contract.pdf $ fm "Audit this layout" --image screenshot.png $ fm "Draft the plan" --session launch $ fm chat --resume launch

Preview project context without contacting a model using fm pack . --json. Run fm --help or fm COMMAND --help for every option.

Verify, upgrade, or recover.

Re-run the install command to upgrade. If a route fails, run fm auth, then fm models --live and choose a model your account exposes.

$ fm support --output fm-support.json
✓ owner-only · safe to attach · no model call

If a test fails, attach this sanitized report. It excludes credential values, prompts, histories, system instructions, vendor account details, and local paths.

Release evidence: 254 automated tests; clean wheel and source installs; a successful live fm ready --live proof through Codex; ask and comparison preflights with zero model calls; and a source-shipped cross-platform quality gate.
Designed for the actual terminal

Small surface.
Deep capability.

The best interface is the one you already know. Pipes remain pipes. Output remains output. Complexity appears only when you ask for it.

01 — Exact URL context

Give it the page. Get the evidence.

Repeat --url for release notes, issues, papers, or docs. Every page comes back retrieved, failed, or unverified—so a provider refusal can never hide behind a plausible answer.

openai/…anthropic/…google/…structured sources
$ fm "extract breaking changes" --url https://example.com/releases/v2
✓ retrieved · provider-attested · replayable
02 — Project context

The tree you meant. Nothing you didn't.

Attach a directory with -f. Git ignores stay authoritative; secrets, symlinks, binaries, and build trees stay out. Preview the exact manifest before any model sees it.

$ fm pack . --json
86 files · 412 KB · 9 safely skipped
$ fm "review the architecture" -f .
03 — Native documents

Read the page, not just the words.

Attach PDFs with -p. Text, tables, charts, and layout reach each provider in its native document format.

$ fm "find the renewal risk" --pdf msa.pdf
PDF verified · native document input
04 — Contract

JSON you can build on.

Pass one portable schema. Each provider constrains generation natively; fm validates again locally and publishes the result atomically.

$ fm "triage this" -f incident.txt --schema triage.schema.json
{"severity":"high","owner":"platform",…}
05 — Durable batch queues

Stop anywhere. Never overspend.

Every row gets its own recovery chain under one queue-wide token ceiling. In-flight reservations never oversubscribe it; reported savings flow to waiting work and checkpoints fingerprint the policy.

$ fm batch prompts.jsonl -j 8 --fallback anthropic/… --output-budget 24000
risk-42 · openai/… · HTTP 503
✓ risk-42 · anthropic/… · recovered
output budget · 18.4k/24k charged · 5.6k left
06 — Universal autonomy

Authority you can reason about.

File tools stay inside the workspace. Commands get an isolated home, a credential-scrubbed environment, bounded output, and their own approval gate.

$ fm agent "fix the parser" --yes
✓ edit applied atomically
command denied · --yes never grants execution
$ fm agent "fix and test" --yes --allow-commands
07 — Decision, not a pile of answers

Compare blind. Leave with one answer.

Candidates run in parallel. A judge sees anonymous, untrusted answers and returns a schema-validated winner, rationale, and synthesis. Model identity never enters the evaluation prompt.

$ fm compare -m openai/… -m anthropic/… --judge google/… "find the flaw"
verdict · Candidate B · The only answer that tests the rollback assumption.
structured · locally validated · candidates preserved
08 — Output control

Budget before. Ledger after.

Set one output ceiling across parallel candidates, judging, chat turns, or an agent loop. Unused tokens flow forward; missing usage is charged conservatively.

$ fm compare … --judge google/… --output-budget 6000
output budget · 2.8k/6.0k charged · 3.2k left
provider-native caps · machine-readable · no price guesses
09 — Vendor-owned login

Your login. Their vault. Honest boundaries.

Reuse authenticated ChatGPT, Claude, and MiniMax sessions through their official CLIs; use direct APIs across all six provider families. The Gemini CLI bridge remains explicit for compatible enterprise/API-key installations.

$ fm auth
✓ ChatGPT / OpenAI   tether · chatgpt/default
✓ Claude / Anthropic  tether · claude/default
✓ Gemini / Google     API · google/…
✓ MiniMax / MMX       tether · minimax-cli/default
$ fm "stress-test this" -m minimax-cli/default
✓ official endpoint · isolated · exact usage
10 — Scriptable conversations

One thread. Any shell.

Carry full context across commands, then compress older turns into validated durable memory. Steering stays pinned and revision checks stop concurrent writers from erasing each other.

$ fm "build the rollback checklist" --session launch
$ fm sessions compact launch --json
✓ 12 messages → durable memory · 4 preserved
11 — Safe model failover

Your conversation outlives the outage.

Backups activate only when reached. Unused routes cannot block the primary; unavailable setup costs no tokens or model calls, and the remaining policy still survives shell exits and forks.

$ fm chat -m openai/… --fallback anthropic/… --fallback google/…
anthropic/… · unavailable before contact · 0 tokens
✓ google/… · recovered · now active
lazy activation · honest ledger · durable policy
12 — Executable MVP proof

Don't trust the claim. Run the proof.

Verify your route, then check the first-party feed without changing your installation. Every upgrade is bounded to this host and SHA-256 verified before pip starts.

$ fm ready --live
✓ MVP VERIFIED · actual model response received
$ fm update --check
✓ fm is current · release manifest verified
install only with confirmation or --yes
13 — Privacy-safe support

Useful evidence. Nothing private.

Create one attachable diagnostic bundle with versions, platform, route selection, connection state, and sanitized endpoints. Secret values, prompts, histories, instructions, account details, and local paths never enter the report.

$ fm support --output fm-support.json
✓ mode 0600 · atomic · refuses overwrite
prompt data sent: false · inference used: false · secrets included: false
14 — Dynamic Tab completion

The whole mesh, one Tab away.

Bash, Zsh, Fish, and PowerShell complete the real command surface plus provider routes, reasoning levels, local profiles, and resumable sessions. No credential checks, network requests, prompts, or inference occur.

$ fm completion powershell --install
✓ installed atomically · existing files protected
PS> fm ask --model ⇥
chatgpt/default  anthropic/…  google/…
local-only · parser-derived · filesystem-aware
15 — Self-serve first run

From this machine to one real answer.

Detect every supported connection, select what already works, or get an exact provider-specific setup plan. Credential values and account details stay out; setup sends no prompt and performs no inference.

$ fm setup
✓ ready to use chatgpt/default
1. fm ready -m chatgpt/default
2. fm ready --live -m chatgpt/default
3. fm "Reply with exactly: fm is ready" -m chatgpt/default
16 — Native cross-platform core

Windows is a platform, not an afterthought.

The same concurrency guarantees now use native Windows byte-range locks. Configuration and sessions live in Windows application-data directories; agent commands preserve native quoting and terminate full process trees without a Unix shim.

PS> py -m pip install frontier_models_cli-0.49.0-py3-none-any.whl
PS> fm setup
✓ native import · native locks · native paths
PowerShell 7 completion · no WSL required
17 — Cross-platform release gate

Portability is executable.

The source ships a least-privilege, immutable-action workflow spanning Windows, macOS, and Linux on the minimum and current Python releases. Every runner installs the package before the complete suite and installed-command smoke test.

✓ windows-latest · macos-latest · ubuntu-latest
✓ Python 3.11 · Python 3.14
✓ native cross-process lock contention
read-only permissions · SHA-pinned actions
18 — Token-aware dry run

See the request before it spends.

Resolve the real route chain, pack and validate every input, estimate text tokens, and expose the full output authorization without calling a model or changing the session. The same production preparation path powers both preview and execution.

$ fm "Review this project" -f . --dry-run
✓ openai/… → anthropic/…
✓ ≈18.4k text tokens · 42 files · 6000 output authorized
0 model calls · no prompt sent · session unchanged
19 — Comparison cost preflight

See fan-out before it multiplies.

Preview every parallel candidate reservation, the hard run ceiling, and the conditional blind judge before constructing a provider. Shared budgets expose the judge's guaranteed-to-maximum range after candidate savings are reclaimed.

$ fm compare -m openai/… -m anthropic/… --judge google/… --dry-run
✓ candidate 1 · 2000 output
✓ candidate 2 · 2000 output
✓ judge · 2000–4000 · total ceiling 6000
0 providers constructed · 0 model calls
Product principles

Power without ceremony.

01
Stream by default.

The first useful token should arrive as soon as the provider sends it.

02
Automate without adapters.

Plain stdout, diagnostics on stderr, stable JSON envelopes, meaningful exit codes.

03
State that earns its keep.

Conversations save atomically with revision checks. Preferences persist. Secrets never do.

04
Provider details stay at the edge.

One internal conversation model, purpose-built transports, no lowest-common-denominator API.

05
Safety you can understand.

No vague magic sandbox. File boundaries, no implicit shell, scrubbed command environments, and distinct authority gates.