hobhob
Customizing

Agent accounts

Run multiple Claude Code, Codex, or OpenCode accounts — fully isolated backend profiles, or accounts that share one conversation history.

hob doesn't own your model account. It launches the agent CLI on your machine, using whatever account and config directory that CLI sees. Everything is configured in one place — Settings → Agent → Backend Profiles — around three concepts:

  • Isolated profile — a backend profile with its own config directory: its own login, CLI settings, and conversation history. Best when things must stay apart, like work and personal.
  • Variant profile — a backend profile that shares another profile's data (same login, history, and accounts) and differs in CLI flags or environment variables. Great for things like a flags-only twist on your main backend.
  • Accounts — extra subscriptions on one profile that share its conversation history. Switch a pane between them and the conversation continues on the other subscription. Best when the identities are interchangeable, like hopping to a second subscription after hitting a usage limit.

Accounts: multiple subscriptions, shared conversations

On a profile's card in Settings → Agent → Backend Profiles, click + Add account (Claude Code and Codex are supported). hob shows exactly what it will create before touching anything: a new config directory for that account's login and CLI settings (for example ~/.claude-work), with its sessions subdirectory linked back to the backend's own — so every account reads and writes the same conversation corpus. hob never overwrites existing data, and the option is unavailable if directory links can't be created on your filesystem.

Sign the new account in by copying its login command from the Accounts settings (or click log in in the pane's account menu to open a login terminal).

Already logged in somewhere else? Point the existing login field at that config dir (for example ~/.claude-personal, set up manually or as an isolated backend profile) and the new account starts signed in with it — no fresh login needed. hob copies the credential file in and keeps the two in sync automatically from then on, so token refreshes on either side never drift apart. The source directory itself is never modified and keeps working on its own.

Once a profile has more than one account, agent panes show an account selector between the backend and model pickers. Switch that pane's account there — the switch applies from your next message, and because the conversation history is shared, the session resumes right where it was on the other subscription. Different panes can use different accounts at the same time. The star in the selector sets that profile's default account for new panes, at the global or project scope — variant profiles inherit their base profile's default until you star something on them directly.

Primary is the profile's own login (rename it inline in settings if you like); removing an account from hob never deletes its config directory or login from disk.

Variant profiles: same data, different behavior

Choose "Shares … data" in the profile editor's Data control to make a variant: it runs against the base profile's config directory, so it has the same login, history, and account pool — only the launch configuration differs. Because the data is shared, a pane can switch between a base profile and its variants mid-conversation (the transcript resumes under the new flags), and the pane's selected account survives the switch.

The config-dir environment variables (CLAUDE_CONFIG_DIR, CODEX_HOME, OPENCODE_CONFIG_DIR) are managed exclusively by the Data control — hob rejects them in Environment variables so a profile's isolation is always what its Data setting says it is.

When to use isolated profiles

Use an isolated profile when data must stay apart:

  • Claude Code personal and work accounts whose histories should never mix
  • Different API keys or proxies for the same CLI
  • OpenCode profiles backed by different config directories

New profiles are isolated by default. If every pane in a repo should use one profile, make it the repo's project default.

Set up an isolated profile

The profile editor's Data control provisions the config dir for the supported CLIs. hob writes the right environment variable for the protocol, so you do not have to remember it:

ProtocolDefault config dirProfile override
Claude Code~/.claudeCLAUDE_CONFIG_DIR
Codex~/.codexCODEX_HOME
OpenCode~/.config/opencodeOPENCODE_CONFIG_DIR

Sign in to each account

Use the CLI's normal login flow once for each config directory.

For Claude Code:

CLAUDE_CONFIG_DIR=~/.claude-work claude
CLAUDE_CONFIG_DIR=~/.claude-personal claude

For Codex:

CODEX_HOME=~/.codex-work codex
CODEX_HOME=~/.codex-personal codex

For OpenCode:

OPENCODE_CONFIG_DIR=~/.config/opencode-work opencode
OPENCODE_CONFIG_DIR=~/.config/opencode-personal opencode

Add a backend profile

In Settings → Agent → Backend Profiles, click + Add backend. In the New backend modal:

  1. Set Name to something explicit, like Claude Code - work, Codex - personal, or OpenCode - client A.
  2. Set Protocol to Claude, Codex, or OpenCode.
  3. In the Data control, keep Isolated (the default) and confirm the suggested config directory, such as ~/.claude-work, ~/.codex-personal, or ~/.config/opencode-client-a.
  4. Set Command only if the CLI is not on your PATH or you want a specific binary.

Click Save, then expand Launch configuration on the new profile card to add CLI flags or environment variables. Repeat for each profile.

New agent panes can now choose any profile from the backend picker. In an existing agent pane, the picker is the first control at the lower-left, in the status row directly below the message box. It shows the active backend/profile name. Click it, or press Alt+B while that pane is active, to switch; the new selection applies to the next turn. Once a conversation has started, hob only offers profiles that can safely resume that conversation's data. Open a new agent pane to use an unrelated isolated profile. The built-in backends keep using the default CLI config directories.

Examples

NameProtocolSeparate config dir
Claude Code - workClaude~/.claude-work
Claude Code - personalClaude~/.claude-personal
Codex - workCodex~/.codex-work
Codex - personalCodex~/.codex-personal
OpenCode - workOpenCode~/.config/opencode-work

A backend profile can't be named so its ID collides with a built-in (claude, codex, opencode) — the save is blocked. Use a descriptive profile name instead, such as Claude Code - work or Codex - personal.

Models

The Models section (below Backend Profiles in Agent settings) curates each backend's model list. Curation is per backend — profiles and variants built on the same backend all see the same list.

Register a model hob doesn't ship yet — a brand-new release, or a provider-specific id — and it joins the model picker everywhere: the pane picker, roam, and the hob CLI (hob open pane agent --model <id>), which rejects model ids it doesn't know. Typing an unknown id straight into a profile's Model default registers it too. If a later hob update ships an id you registered, the built-in entry wins so naming stays consistent — your copy is marked built in now and is safe to remove.

Hide a model you never use to keep pickers short. Hiding is cosmetic and safe: panes already using the model keep working, you can unhide it anytime, and if a hob update later drops a hidden model from the registry the stale entry is simply ignored.

Per-project defaults

Backend profiles are global, but you can make a repo default to one. At the top of the Agent settings page, switch the Global / project scope toggle to the project, then set its default backend, model, and effort. For example, a company repo defaults to Claude Code - work while personal repos default to Claude Code - personal.

Notes

  • The Data control stores the matching config-dir environment variable in the profile for you; it's the only place that variable can be set.
  • Environment variables under Launch configuration is only for additional variables; enter one KEY=VALUE per line. Blank lines and # comments are ignored.
  • A leading ~ expands to your home directory in config dirs, env vars, and the Command path.
  • Existing panes keep the backend they were created with — open a new pane or press Alt+B to switch.
  • hob keeps Claude Code and Codex session history per profile when the profile uses a distinct config directory, so account-specific conversations stay separated in Activity.
How is this guide?

On this page