DocsModels (scx.ai)›
Docs · Capabilities
Models
Fulcrum routes through the scx.ai gateway. scx.ai is sovereign-Australian inference infrastructure, which is why the model list below is curated rather than the OpenAI catalogue you might be used to. Every field on this page is a real config key in ~/.fulcrum/config.jsonwith a real default — no marketing aliases, no model names that haven't shipped.
The default models
These are the values Fulcrum ships with. Override any of them by editing ~/.fulcrum/config.json or by exporting the matching FULCRUM_* env var (see docs · configuration).
| Field | Default | Use |
|---|---|---|
model | MiniMax-M2.5 | Default chat / tool-use model. Every turn runs through this unless the input contains an image (auto-routed to the vision model) or you have explicitly switched it via /model. |
vision_model | Llama-4-Maverick-17B-128E-Instruct | Auto-routed when an image is present in the prompt — paste a screenshot, attach a PNG, or drop an image into the TUI and Fulcrum sends that turn to the vision model instead of the default chat model. |
transcription_model | Whisper-Large-v3 | /voice mic input. Fulcrum records, POSTs the audio to /audio/transcriptions, and drops the returned text into the prompt for review before submit. |
tts_model | tts-1 | /speak text-to-speech. Routes the assistant's reply through scx.ai's /audio/speech endpoint with the voice configured in tts_voice. |
The base_url for all four endpoints is https://api.scx.ai/v1 unless you point Fulcrum at a self-hosted scx.ai instance via FULCRUM_BASE_URL.
How routing works
One config field per modality — Fulcrum picks at turn time based on what's in the prompt. No router service, no fan-out, no reasoning-vs-tools split. Just four named endpoints.
model — the default path
Every turn runs through the chat model unless overridden. Switch with the /model or /models slash command — both open a cursor menu of the catalogue and persist your pick to config.json.
vision_model — auto-routed for images
When the message history for a turn contains image input, Fulcrum overrides model with vision_model for that single turn. The transcript shows the override so you know which model answered. Use /vision to inspect or change the active vision model.
transcription_model — /voice
/voice records from the mic, posts the audio to /audio/transcriptions, drops the returned text into the prompt input. You see it before you submit — no surprise messages. See voice & speak.
tts_model — /speak
/speaktakes the assistant's last reply (or the next one, with /speak-on) and runs it through /audio/speech using the configured tts_voice. Toggle persistent speak-back with /speak-on and /speak-off.
Voice catalogue
scx.ai exposes its own voice catalogue (not the OpenAI alloy/echo/... set). The default is serene-assistant; pick another with /voices in the TUI, which opens a cursor menu of every supported voice. As of the current release, the catalogue is:
australian-samfriendly-kiwilikeable-aussieitoserene-assistantdefaultalice-bennett
The default leans Australian / Pacific because that's the point of the project — local voices for local infra. New voices ship through the scx.ai catalogue and become available without a Fulcrum release; consult the changelog when one lands.
API key flow
Two paths. The default is browser-based PKCE login through fulcrumcode.app — recommended for everyone with a subscription. The fallback is a raw api_key in config.json, useful for local dev or self-hosted scx.ai instances where no website is involved.
fulcrum login — PKCE OAuth
- You run
fulcrum login. The CLI generates a PKCE pair (S256) and opens fulcrumcode.app in your default browser. - You sign in to the website. The website verifies the PKCE challenge and issues a 90-day scx.ai key bound to your subscription.
- The key is written to your OS keychain (macOS Keychain, GNOME Keyring, Windows Credential Manager) via
keyring. It is not stored inconfig.json. - On hosts with no working keychain backend (headless Linux, WSL, some CI), Fulcrum falls back to an encrypted file at
~/.fulcrum/scx.enckeyed off a fingerprint of the host — weaker than a real keychain but better than plaintext.
Direct api_key — fallback
If you set api_key in config.json (or export FULCRUM_API_KEY), Fulcrum sends it as the bearer token directly to base_url. No browser, no keychain, no website round-trip. Useful when you're running against a self-hosted scx.ai instance, or for ephemeral CI jobs that already have secret management. The plaintext-on-disk trade-off is yours to make.
Why scx.ai (and not the OpenAI catalogue)
Fulcrum is positioned around Australian sovereignty. Models on scx.ai are hosted in-country, governed by the Australian Privacy Act and the Australian Consumer Law, and subject to Australian jurisdiction for data requests. That is a structural choice, not a marketing claim — it's why the catalogue is curated and why some popular foreign models aren't in the table above. If your bar is "the prompt and the response stay under Australian law end-to-end", that bar is unreachable on a US-hosted gateway. So Fulcrum doesn't use one.
Next steps
- Voice & speak → How
/voiceand/speakchain the transcription and TTS endpoints with the chat model. - Best practices → When to switch model, when to override vision, how to keep multi-step refactors inside the context window.
- How it works → The agent loop and the on-machine vs on-scx.ai split that makes this routing possible.
- Changelog → When new scx.ai models or voices land, they ship through here.