Settings & appearance

The Bandura Settings page: category tabs, search across every preference, a draft you save or discard, plus AI provider, API key, licence and theme controls.

6 min read

Open Settings with ⌘,, the gear icon in the activity bar, or View: Settings from the command palette. Every preference on the page is a key in a hand-editable settings.json; the page is a typed front end over that file, with a draft you save or discard rather than a control that writes on the keystroke.

How the page works

A category rail runs down the left: Appearance, Editor, AI, Notifications and Licence. It is one tab stop, so Tab reaches it and the arrow keys move between categories, with Home and End jumping to the ends.

Above the settings themselves:

  • Search all settings filters across every category at once, so you do not have to know which one a preference lives in.
  • Modified only narrows to the settings you have changed from their defaults, with the count on the button.
  • Edit settings.json opens the file itself, described below.

Nothing is written until you save

Changing a control edits a draft. A sticky footer at the bottom reports how many unsaved changes there are and offers Discard and Save. ⌘S saves too.

Two consequences worth knowing:

  • Setting a value back to what it was removes it from the draft. It does not sit there as a change that counts but does nothing.
  • Leaving Settings with unsaved changes asks first, and the draft counts toward the unsaved total the window-close guard reads. You cannot lose a half-configured page by clicking away.

If settings.json changes on disk while the page is open, the footer says so, and it says whether any of your pending edits touch the same keys.

Appearance previews live. A theme or accent change repaints the app as you drag, so you can see it before committing; Discard puts it back.

Three controls are deliberately immediate rather than drafted, because they are actions rather than preferences: the AI provider block, the API key, and the licence key.

AI

Which model service powers generation, chat, and ai-action nodes:

  • Anthropic (Claude) is native, the default, and the best-tested path.
  • Gemini is native too, using a Google AI Studio key.
  • OpenAI-compatible covers any /chat/completions endpoint: OpenAI, Groq, OpenRouter, Together, or a local Ollama / LM Studio. Choosing it reveals a Base URL field.

Model is free text with suggestions, not a fixed list, because no dropdown covers every model every endpoint serves. Empty means the provider’s own default; an OpenAI-compatible endpoint has none, so name one.

API key: paste a key and Save key; Remove key deletes it. It is stored in your operating system’s encrypted store (Keychain, DPAPI, libsecret), never in settings.json and never in the workspace. Keys are kept per provider, so switching providers does not lose the other one. A local model needs no key at all. Full details: Connect an AI provider.

Test connection sends one tiny message to whatever you have configured, so a wrong base URL, key, or model id surfaces here rather than mid-run.

The rest of the category covers how much the assistant may spend and remember: token and tool-step caps, whether chat history persists, the conversation context budget, summarising long conversations, ghost-text completions, and automatic workspace retrieval. Every one of those is a settings.json key with its default and range listed.

Appearance

  • Color theme chooses Bandura Dark, Bandura Light, or High Contrast.
  • Accent color offers Blue, Emerald, Violet, Teal, Neutral, or Custom…, which opens a colour picker for any hex you like. This is the selection and action colour throughout the app; the hover shade and the text colour on filled accent surfaces are derived from it, so contrast holds whatever you pick.
  • Font size is a slider from 10 to 20 px for the UI and editors.
  • Editor font lists JetBrains Mono (bundled), System mono, Menlo, Monaco, or Courier New.
  • Line height multiplies the UI line-height scale by 0.9 to 1.4.
  • Density is Comfortable or Compact; Compact tightens spacing for smaller screens.

These are per-machine preferences. Nothing here touches the workspace or its files.

Editor

Sixteen settings for the code editor: word wrap, tab size, whitespace marks, sticky scroll, the minimap, bracket pair colouring, indent guides, caret style and blink, lines kept around the cursor, ligatures, letter spacing, trim-on-save and final-newline-on-save, and two screen reader options. All of them are listed with their defaults in settings.json.

Worth singling out: cursor blinking can be set to solid, because a blinking caret is a documented migraine and seizure trigger, and screen reader page size defaults to 40 lines rather than the stock 10, which is too few to follow a flow.

Notifications

Whether failure notifications stay on screen until dismissed, and whether Bandura checks once a day for a new version. Anything that faded is still readable in the notifications bell.

Licence

Where a purchased key is pasted, and where an active licence shows what it covers: licensee, order id, seats, issue date and the updates-until date. Nothing in this panel gates a feature; see Licence & activation for the whole picture.

settings.json

Everything on this page lives in a plain JSON file you can edit directly, along with per-token theme colours that have no control here. Edit settings.json opens it in Bandura’s own editor; Show in folder reveals it on disk. Hand-edits apply live, with no reload.

API keys and your licence key are deliberately not in it. The full key table is in settings.json, and Customize the theme covers the per-token colours.

Workspace

Under the category rail, a small block shows the current project as Bandura sees it: its name and how many environments its bandura.json defines, with Edit bandura.json to open it as a tab. It is a shortcut rather than a category, because it points at a project file rather than at a preference of yours.

If the workspace has no manifest yet, it says so and points you at the Environments view, which is where one gets created. See Variables & environments for what goes in it.

Last updated

Looking for something else? All 37 articles are on one page in the Help Center.