Skip to article
Browse chapters

Quick start

Sign in to a provider, run a first turn, and read the permission card bingo puts in front of you.

Open bingo where the work is

cd ~/code/my-project
bingo

With a terminal on both ends of the pipe, bingo takes the whole screen and opens its terminal surface. If either stdin or stdout is redirected, the same binary runs headless instead — see running headless.

The first screen is a welcome box, an input box, and one line of status under it:

╭──────────────────────────────────────────────────────────────╮
│ ✻ Welcome to bingo!                                          │
│                                                              │
│ /help for help · /login codex to use a subscription          │
│   cwd: ~/code/my-project                                     │
╰──────────────────────────────────────────────────────────────╯
╭──────────────────────────────────────────────────────────────╮
│ > ask anything · / for commands · ! for shell                │
╰──────────────────────────────────────────────────────────────╯
? for shortcuts

Sign in

Nothing runs until a provider has a credential. Which command you use depends on what you have.

bingo login codex       # a ChatGPT subscription, through a browser
bingo login anthropic   # paste an API key
bingo login openai      # paste an API key

bingo login <provider> opens a browser for the providers that have an OAuth issuer, and asks for a pasted credential for the ones that take a key (ADR-0012, ADR-0017). Two flags change how it asks: --device shows a code to enter in a browser somewhere else, and --paste reads a credential minted elsewhere from stdin. bingo logout <provider> forgets it again.

ANTHROPIC_API_KEY and OPENAI_API_KEY are read too, so a machine that already exports one needs no login at all. Credentials land in ~/.bingo/data/auth.json, mode 0600 — never in a settings file, which a project commits.

The same two commands exist inside a session as /login and /logout. More in providers and models.

The first prompt

Type a sentence and press enter. What comes back reads like this:

> what is in this workspace?

⏺ I'll read the manifest first.

⏺ Read(Cargo.toml)
  ⎿  Read 42 lines

⏺ One workspace, 27 crates: a kernel and its plugins.

> is what you said, ⏺ is what bingo said or did, ⎿ is what came back. While a turn runs, an activity row sits above the input box — ✻ Simmering… (esc to interrupt · 4s · ↓ 1.2k tokens) — and esc stops it.

You can also give the prompt on the command line, which skips straight to it:

bingo "what is in this workspace?"

The permission card

Before a tool touches anything, bingo asks. The question is a card with the only bright border on screen, under the row that asked:

╭──────────────────────────────────────────────────────────────╮
│ Edit                                                         │
│   +line 0                                                    │
│   +line 1                                                    │
│   … +8 lines (ctrl+e to expand)                              │
│                                                              │
│ Do you want to edit src/lib.rs?                              │
│ ❯ 1. Yes                                                     │
│   2. Yes, allow Edit(src/) during this session               │
│   3. No, and tell bingo what to do differently (esc)         │
╰──────────────────────────────────────────────────────────────╯

Answer with the number, or with y / a / n. Option 2 installs a rule for this session only; it is never written to disk. Option 3 lets you say what to do instead, and that text goes back to the model as the denial’s reason. ctrl+e expands the preview above the question.

What is asked about, and what runs without asking, is the permission mode and the rule tables — see settings and permissions.

Commands worth knowing on day one

commandwhat it does
/helpthe shortcuts and commands panel (? toggles it too)
/statusmodel, provider, context and the rest of the session’s facts
/model [<provider>/]<model>switch what the next turn runs on
/compact [instructions]summarise the transcript now
/permission <mode>read or set the permission mode
/clearstart a fresh session in this directory
/resumereopen an earlier session from a picker
/exitleave
!<line>run a shell line yourself, without the gate

Commands complete on tab, and / opens the list.

Coming back to a session

Every session is a journal on disk under ~/.bingo/data/sessions/<id>/, so leaving loses nothing:

bingo --continue      # the most recent session in this directory
bingo --resume <id>   # a particular one

Inside the terminal surface, /resume opens the picker instead, one session per row:

Resume
❯ 1. fix the parser · 12 msgs · 2h ago
  2. 请帮我把这个解析器修好 · 1 msg · 1d ago
  3. untitled · 5d ago

Next: the terminal surface in full.