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).

FieldDefaultUse
modelMiniMax-M2.5Default 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_modelLlama-4-Maverick-17B-128E-InstructAuto-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_modelWhisper-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_modeltts-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-sam
  • friendly-kiwi
  • likeable-aussie
  • ito
  • serene-assistantdefault
  • alice-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

  1. You run fulcrum login. The CLI generates a PKCE pair (S256) and opens fulcrumcode.app in your default browser.
  2. You sign in to the website. The website verifies the PKCE challenge and issues a 90-day scx.ai key bound to your subscription.
  3. The key is written to your OS keychain (macOS Keychain, GNOME Keyring, Windows Credential Manager) via keyring. It is not stored in config.json.
  4. On hosts with no working keychain backend (headless Linux, WSL, some CI), Fulcrum falls back to an encrypted file at ~/.fulcrum/scx.enc keyed 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 /voice and /speak chain 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.