Bogen

Command line

Every bogen command, from bogen --help and the code behind it. From a checkout the command is node packages/server/dist/cli.js.

Commands that talk to the server (open, mcp, snapshot, import, export-folder, import-folder, git, live, phone, and peer except deploy) start it in the background when it is not running, unless BOGEN_URL points elsewhere. --port (or -p) picks the port for any of them, and --token the token of a server that needs one.

Running the server

bogen serve

bogen serve [--port 29990] [--host <addr> --token <secret>] [--tailnet]

Runs the server in the foreground until Ctrl+C. Prints its address and data folder.

OptionWhat it does
--port, -pThe port. Default 29990, or BOGEN_PORT.
--host <addr>Listen on this address instead of 127.0.0.1. Any address beyond this machine needs a token.
--token <secret>Require Authorization: Bearer <secret> (or /?token=<secret> once in a browser). BOGEN_TOKEN works too.
--tailnetAlso listen on this machine's Tailscale address, for device sync.
--insecure-allow-any-hostLet peer pair and peer add use addresses outside the tailnet. For testing.
--devFor working on Bogen itself, with the editor's development server.

bogen start, stop, status

bogen start [--port 29990] [--host <addr>]
bogen stop
bogen status

start runs the server in the background and prints its version, address and process id. When a user service bogen.service is installed, it starts that service instead. stop stops the background server. status prints the address, version, process id, number of files and active agents, and says when the running server is another build than the command or a paired device runs another version. It exits 3 when the server is not running.

bogen open

Opens the editor in your browser, starting the server if needed. With a token, the address carries it.

bogen mcp

MCP over stdio, for agents. It relays to the server's /mcp, starts the server if needed, and keeps calls going across a reconnect. This is the command bogen install registers.

Agents

bogen install

bogen install <claude-code|codex|cursor|vscode|opencode|gemini|zed>... | --all

Adds Bogen to MCP clients, and for Claude Code and Codex writes the Bogen skill. --all (or all) sets up every client found on this machine and skips the rest. Prints one line per client: ok, skip or FAIL, and exits 1 if one failed. See Agents.

bogen uninstall

bogen uninstall <client>...

Takes Bogen out of the named clients, skill included. A skill file Bogen did not write stays.

bogen live

bogen live <dev server url> --dir <project folder>

Opens a dev server on this machine in live site mode: pick elements and have claude or codex edit the project's source. The address must be plain http on localhost or 127.0.0.1, and --dir the folder of one project.

Checking the setup

bogen doctor

bogen doctor [--json]

Checks the whole setup and prints the fix for each problem. Changes nothing. Exits 1 when a check failed. With the phone on, it also checks the phone listener, its port in tailscale serve, the allowed logins, and whether the tailnet policy lets each of your phones reach that port. See Troubleshooting.

Capture and import

bogen snapshot

bogen snapshot <url> [--file <id>] [--page <name>] [--name <artboard>] [--width 1440] [--height 900] [--scheme dark|light] [--no-fonts]
bogen snapshot --site <url> [--widths 1440,768,390] [--schemes dark,light] [--limit 30] [--file <id>] [--name <file name>] [--no-fonts]

Copies a page, or a whole site with one page per route, onto the canvas as editable layers. A single page prints its result as JSON; a site prints its progress and a report, and exits 1 when it failed. See Snapshot.

OptionWhat it does
--file <id>Add to this file. Without it, a new file.
--page <name>One page: the page in that file.
--name <name>One page: the artboard's name. A site: the new file's name.
--width, --heightOne page: the viewport, 200 to 4000. Defaults 1440 and 900.
--scheme dark|lightOne page: the colour scheme.
--site <url>Capture the whole site.
--widthsA site: widths, comma separated. Default 1440.
--schemesA site: dark, light or both. Default dark.
--limitA site: the most routes. Default 30, at most 200.
--no-fontsDo not keep the page's self-hosted fonts.

bogen import figma

bogen import figma <file url> [--token <figma token>] [--save-token] [--name <file name>]

Imports a Figma file or frame through Figma's REST API with your personal access token, from --token, FIGMA_TOKEN, or one saved before. --save-token keeps it in config.json, readable by you only. See Import from Figma.

Design folders and Git

bogen export-folder, import-folder, diff

bogen export-folder <file id or name> <folder>
bogen import-folder <folder> [--name <name>]
bogen diff <folder A> <folder B> [--json]

Write a file as a folder of text, make a new file from such a folder, and show what changed between two folders. See History.

bogen git

bogen git init <file> <dir>
bogen git commit <file> [<dir>] [--message <text>]
bogen git log <file> [<dir>] [--limit <n>]
bogen git restore <file> [<dir>] [--rev <commit>]

Keeps a file's design folder in a real Git repository. init makes or uses the repository and binds the file to it; afterwards <dir> can be left out. -m is short for --message. log shows 50 commits unless --limit says otherwise. Bogen runs no prompts or hooks and never pushes.

Devices

bogen peer

bogen peer pair [--name <this device>] [--json]
bogen peer add <url> --token <t> [--name <n>]
bogen peer list [--json]
bogen peer status [--json]
bogen peer remove <id>
bogen peer tailnet <on|off>
bogen peer deploy <ssh-host> [--dry-run] [--port <port>]
CommandWhat it does
pairTurns on the Tailscale listener and prints what the other device runs to pair with this one. --name names this device.
addPairs with another device, both ways. The token can come from BOGEN_PEER_TOKEN instead of --token.
listPaired devices with their ids.
statusThis device and each paired one: state, last sync, pending changes, bytes in and out, last error, version, and who has a file open there.
removeStops syncing with a device.
tailnetTurns the Tailscale listener on or off, and saves it.
deployCopies this build to another Omarchy device over ssh, installs it, restarts it and reports its version. --dry-run changes nothing.

See Devices.

bogen phone

bogen phone on [--login <a,b>] [--https-port 29443] [--phone-port 29991] [--json]
bogen phone off
bogen phone pair [--json]
bogen phone list [--json]
bogen phone remove <id>
bogen phone status [--json]
CommandWhat it does
onStarts the phone listener on 127.0.0.1:29991 and saves that, so the service starts it again after a restart. Runs tailscale serve --bg --https=29443 http://127.0.0.1:29991 unless that port already goes there, and leaves it alone if another app uses it. Prints the address, a QR code of it, and what your tailnet policy has to allow. --login sets which Tailscale logins may connect; by default only the owner of this computer. --https-port and --phone-port pick other ports.
offStops the listener, saves that, and takes this one port out of tailscale serve. Paired phones stay paired.
pairMakes a pairing code that works once, for ten minutes, and prints it with a QR code of the address.
listPaired phones with their ids and when each was last seen.
removeRevokes a phone. Its token stops working and its open connections close at once.
statusOn or off, the address, tailscale serve, the allowed logins, the paired phones, and whether the tailnet policy lets your phones in.

See iPhone and iPad.

Omarchy

bogen omarchy install [--dry-run] [--no-service] [--no-plugin] [--no-hypr] [--tailnet]
bogen omarchy uninstall [--dry-run]

Runs the Omarchy installer or uninstaller that comes with this build. See Omarchy.

Other

CommandWhat it does
bogen version, --version, -vPrints the version with its build, such as 0.1.0+4448e40.
bogen help, --help, -h, or no commandPrints the usage.

Environment

VariableWhat it does
BOGEN_HOMEThe data folder. Default $XDG_DATA_HOME/bogen, else ~/.local/share/bogen.
BOGEN_PORTThe port. Default 29990.
BOGEN_URLFor mcp, status and open: use a server elsewhere, without starting one.
BOGEN_TOKENBearer token, instead of --token.
BOGEN_BROWSERPath to a Chromium-based browser.
BOGEN_NO_SANDBOX1 starts the browser without its sandbox, for containers without user namespaces.
BOGEN_FFMPEGPath to ffmpeg for video and AVIF, or none to use only the browser.
BOGEN_EXPORT_DIRWhere export_file writes. Default ~/Downloads/Bogen.
BOGEN_ALLOWED_ORIGINSExtra browser origins the server accepts, comma separated.
FIGMA_TOKENFor import figma: your Figma personal access token.
BOGEN_PEER_TOKENFor peer add: the other device's token, to keep it off the command line.
OPENAI_API_KEY, GEMINI_API_KEYYour own keys, for image generation.
CODEX_HOMEWhere install and uninstall find Codex's config and skill. Default ~/.codex.