Settings
Settings opens from the gear icon at the right end of the status bar, or by typing settings in the terminal. Escape closes it. What follows is every tab a beta account sees. Team appears once you're in a team. A few others (AI Models, Lab, Email) appear only on accounts with specific grants during the beta, and Billing appears only on devices where you turned it on — if you don't see them, your account doesn't have them yet. Lab is empty right now: the last thing in it, your own MCP servers, moved to the MCP tab on 2026-09-10 and is open to every account.
Appearance
Three skins with live previews — Terminal (monospace, CLI-first, dark), Studio (deep navy, glass panels), Light (cool grey, low-glare). All features work identically in every skin. Also here:
Paste behavior — Smart Import (structured pastes offer to become tasks) or Plain Text. Same as
paste-mode smart|plain.Classic terminal layout — the older shell for keyboard-first users. Everything still works; the newer panels (the lens switcher and the left project tree) are hidden. ⌘K Spotlight stays available, no command goes away, and nothing about confirmations changes. Saved on this device only — it does not follow you to another browser or machine. Same as
shell legacy on|off.Unified Surface — the shell BEAM is moving to: Team, Projects, Channels, DMs and Agents side by side, with the same terminal a ⌘K away. It is still opt-in, so it is off until you ask for it. Turning it on or off reloads the page, in both directions: it swaps the whole layout, and the reload is what keeps your terminal history rather than tearing the terminal down as you read it. Anything waiting at a y/n prompt is cleared by the reload — nothing is answered for you. If the classic terminal layout is also on, that one wins and this row says so; nothing on screen changes and nothing reloads until you turn the classic layout off. Saved on this device only. Same as
shell unified on|off.Voice — pick the text-to-speech voice, with previews.
Voice engine — who answers when you talk to BEAM. Voice conversations run on ElevenLabs with Claude as the brain. BEAM can also offer a second engine, OpenAI Realtime, when your monthly voice budget is nearly used. On that engine GPT answers, not Claude — it is the model that hears the audio, so there is no way to keep Claude behind it — and BEAM says so out loud and prints it before the first turn. Both engines draw on the same monthly budget.
The switch is off by default and per-device; turning it on does not change anything on its own, it lets BEAM make the offer. You accept one session at a time:
voice engine gptarms the next session only, and voice goes back to ElevenLabs after it.voice engine automeans "tell me when it is worth considering";voice engine elevenlabsmeans "never mention it". The GPT voice also has to be switched on for the BEAM server you are using — if it is not, BEAM says so and stays on the ElevenLabs voice.
Account
The signed-in account: email, cloud sync state, sign-out. Cloud sync can be disabled entirely for a local-only workspace (account disable does the same).
API Keys
Bring your own provider keys (Anthropic, OpenAI, Google, Perplexity). BEAM ships with server-side keys on every beta account, so this is optional — reasons to add your own: your requests bill to your own accounts, and the shared-key rate limit no longer applies to you.
Keys are stored encrypted under your vault key. If encryption isn't set up or is locked, BEAM refuses to store keys on disk — they stay in memory for the session and the UI says so.
AI Mode
Controls how the AI engages: response style and whether the AI can read your workspace data (also settings ai-context on|off).
With workspace context off, your projects, lists, tasks, docs, memories, decisions and saved messages are not sent to any AI provider. Your question still is — that is the AI call. Commands that exist only to read your workspace refuse rather than send a stripped-down version; the rest keep working on general knowledge and tell you they are doing it, on their own line: "Answering without your workspace — ai-context is off." That line is printed by BEAM from the same check that withheld the content, on ask, in bin/beam, and when a voice call starts — so a withheld answer never looks like a grounded one. See the settings entry under Workspace for the full per-command breakdown.
Usage
Cumulative AI usage — tokens and estimated cost, aggregated monthly by provider and mode. The same numbers that appear per-response in the terminal usage line.
Voice budget. A separate line shows what you have spent on voice this month against your voice budget, when a budget is configured on the server you are using — every voice second, on either engine. It is read from BEAM's server, not from this browser: voice is billed by the second while you talk and the charge is recorded when the conversation ends, so a per-device tally would be lower than the real one. This is the same figure that decides whether a voice session can start, which is why it is shown here rather than folded into the account total above it.
When the balance is nearly gone BEAM says so out loud, once, in the middle of the conversation — you are talking, not reading — and at the budget it says why and ends the call. Text is unaffected either way, and voice resets on the 1st.
If BEAM cannot read the figure, the line says so instead of showing a number. A number it cannot stand behind would read as "you have barely used any" when the truth is that it cannot see. In that state the ElevenLabs voice keeps working and the GPT voice does not — the GPT voice is only offered when your budget is nearly spent, so an unreadable balance there is most likely to be an over-budget one.
Logs
Application logs, for support conversations.
Calendars
Read-only external calendars, aggregated into BEAM's Calendar tab and the agenda command: Google (sign in with Google), Outlook, Apple/iCloud (app-specific password), or any ICS URL. Credentials are encrypted server-side; external events are display-only and never enter your workspace data.
Permissions
Every tool BEAM can run, what it costs you to let it run, and the one place to change it. The same setting as action permissions in the terminal — one table, two ways in.
Each row shows five things:
- Tool — the tool's name, as the AI proposes it.
- Default — how BEAM classifies it out of the box.
- In force — the tier that will actually be enforced right now. If you have overridden it, this differs from Default and is marked (yours).
- Ceremony — what you have to do before it runs: none (it just runs), y (BEAM shows a receipt and you answer it), or typed code (BEAM shows a receipt with a short code on it, and you type that code back — the destructive tools).
- Why — the one-line reason it sits where it does.
The three tiers:
| Tier | What it means |
|---|---|
auto |
Runs without asking. Reversible in place through the event log — creates, in-place edits, reads, web lookups. |
confirm |
BEAM asks first. Structural changes (moving things between containers, reordering, link writes), plus every tool BEAM does not recognise, including external MCP tools. |
manual |
BEAM asks for a typed code. The destructive set — deleteTask, deleteList, deleteDoc, deleteProject, bulkMutate — where undoing it is a restore rather than an undo. |
You can always make a tool stricter. Raising a tool's tier only ever adds ceremony, and it also stops the AI running it unattended in an ask conversation.
You cannot make a destructive tool looser. auto and confirm are refused for anything BEAM classifies manual, in the panel and from the terminal alike. Lowering one would drop the typed-code step everywhere at once, including BEAM's MCP server — where an outside AI client's tool call reaches your workspace with nothing to ask.
Loosening anything else is allowed. If you want BEAM to create projects without asking, createProject can be set to auto.
A tier is not a per-request approval. It applies everywhere, for as long as you leave it set. If you only want one thing to run once, answer its receipt — do not change the tier.
Reset all drops every override and returns each tool to how BEAM classifies it. Same as action permissions reset.
What the panel shows after a change is read back from your workspace, not assumed from the click: if the change did not land, the row keeps showing the old tier and says so.
⚠️ This governs the paths that consult the permission gate — action run, BEAM's MCP server, the confirming ask path, and the default cloud ask loop. It is a control over what BEAM's own tool execution costs you, not a guarantee about software outside BEAM.
MCP
Tool-server connections the AI can use. Built-in tools are always present; external integrations (Google Drive/Docs/Calendar, GitHub) are enabled per-account during the beta — see the mcp command.
Your own MCP servers — off by default, on every account, labelled experimental. Turning it on lets you point BEAM at an MCP server by URL, from this panel or with mcp add <url>.
What it does: BEAM's server — not your browser — opens the connection to the URL you choose and holds it open, and the tools that server advertises become tools the AI can offer to call. BEAM asks you before running one, and says what it is about to send. Only you see the servers you add; nobody else's account can see or call them. Only public addresses are accepted; an address on a private network is refused.
What it does not do yet, stated plainly because you should decide with it in mind:
- Authentication goes in the Authorization header field, not the URL. BEAM stores that value encrypted on its own server, sends it only to the URL you gave — if that server answers with a redirect to a different site, BEAM refuses the redirect rather than forwarding your credential — and never shows it back to you — BEAM's server can read it; your browser cannot. It is at-rest protection and an operator-access bound, not end-to-end encryption. A URL carrying a username, password or token-shaped query parameter is refused, because a URL is stored and displayed in plain text. To change a credential, remove the server and add it again.
- Whoever runs the server you point at controls the tool names and descriptions the AI reads, and receives whatever the AI sends to it. Point it at servers you trust the way you would trust an app you install.
- BEAM asks you before running any of these tools — unless you have set that tool to run automatically in Settings → Permissions.
The servers you add are kept on your account, so they are still listed after BEAM's server restarts. BEAM does not reconnect them by itself — after a restart they come back showing as disconnected and you press connect. Removing one deletes it from your account, and BEAM keeps a record that you added and removed it. If the list ever says personal MCP servers are unavailable on this deployment, that means BEAM has nowhere to record what it would be connecting to, and it will not connect out at all until that is fixed.
The switch is saved to your account (so BEAM knows whether it may connect out on your behalf), and the add form appears on the devices where you turned it on. Turning it off stops BEAM connecting out for you and removes the servers you had added. Review by 2026-11-14.
Billing
Off by default, on every account. Turn it on in Settings → Appearance → Billing panel and a Billing tab appears on that device. It is saved on that device only — it does not follow you to another browser or machine.
Nothing here can charge a card. BEAM's server refuses to start billing against anything but a Stripe test key — a live key makes every billing route answer 503 with the reason — so the panel carries a permanent "Test mode — no card is charged" banner, and that banner is drawn from what the server reports about the key it is actually holding, not from a setting in the app. If you do not see the banner, billing is not configured on that server and the plan buttons do nothing.
What the tab shows:
- Your plan — read back from the subscription itself, never from the button you pressed. Seat count, trial end and cancellation date appear when they apply. When BEAM cannot read your plan it says so, rather than showing you a plan you do not have.
- Plans — the panel lists the seat tiers, what models each reaches, its monthly model-work allowance, its voice allowance, and whether debate is on. Pricing is not final and nothing here can charge a card. These are descriptions of what a plan includes.
- Manage plan — opens the Stripe customer portal, where a plan change, a card change or a cancellation happens. Changing plan there is the right way to move rungs; starting a second checkout would create a second subscription, and BEAM refuses that.
- Decision Records — recorded and reported. They are not counted against any plan and they are not billed. The line exists on the subscription at $0 so it can be switched on later as a price change rather than a migration; nothing is ever reported against it.
Review by 2026-10-24.
Encryption
The load-bearing tab:
- Enable / status — whether encryption is on for this workspace's content fields (AES-256-GCM, key derived from your password on-device). It is off until you turn it on.
- Change password — re-derives your keys and generates a new 24-word recovery phrase; the old phrase stops working. Save the new one.
- Lock Now — clears keys from memory and returns to the unlock screen. Same as
privacy lock. - Auto-lock timer — lock automatically after 5, 15, 30, or 60 minutes idle. Default is Never; if you work anywhere shared, set one.
- Recovery phrase — view it again while unlocked. If you never saved it, do it now.
Disabling encryption re-writes your data as plaintext after verifying the write succeeded — it will not strand you between states.
Local
Desktop-app only (the tab explains this if you're on the web): binds a local folder (default ~/Documents/BEAM) where BEAM can mirror your text docs as plain Markdown for local tools to read. Turning the mirror on is an explicit plaintext choice made here — nothing is written to disk until you enable it and pick the folder — and Disable & wipe removes what BEAM wrote.
Extension
The BEAM browser extension for quick capture. Optional; the app works fully without it.