bise :*
kiss your backlog goodbye.
ramble. interrupt. change your mind. i run the agents. you stay in flow.
bise /beez/ · french, n.
1. a quick kiss on the cheek :*
2. a brisk north wind
3. a terminal where your agents ship while you think
the brand book · scroll ↓

01 · philosophy

a day with agents feels empty.

you shipped more than ever. so why does it feel like you did nothing?

you spent the day watching progress bars. answering "v1 or v2?". switching tabs. reading what an agent did while you looked away. by evening a lot got merged, and you made none of it. you feel slow, a bit useless, and strangely out of control. you gave away the fun part, and got nothing back.

it's not you. it's the interruptions. every agent pulls you out of your head, every few minutes. and flow, the state where you think clearly and the hours disappear, needs quiet to start. with agents tapping your shoulder all day, you never get there.

bise preserves your flow.

you stay in your head. the agents work around you, quietly, in the same folder. the obvious questions get answered without you. what reaches you is only what's really yours, and it waits until you're ready.

built for humans piloting hundreds of robots, from a distance.

a bise is a little kiss, and a cold north wind. that's the whole idea: a light touch on the shoulder when something needs you, and the rest of the time, a breeze that keeps everything moving while you think.

what we believe

02 · values

five things we never trade away.

∿flow

you never wait on a turn. say it, keep talking. the work runs in the background and bise is always listening.

›control

you decide. bise answers the obvious questions itself, shows why, and brings you only the real decisions.

:*lightness

no project management, no vocabulary to learn, no worktrees to merge. many hands, light work.

♡calm

color means attention. agents talk to each other quietly; what's for you stands out, the rest stays dim.

✓honesty

no silent failure, no hidden limit, no feature we pretend to have. the history never lies: it only grows, in order.

03 · name and mark

bise :*

the name is always lowercase, like a command you type: bise. four letters, easy to type a hundred times a day.

the mark is :*, the kiss you type on a keyboard. it works in any terminal and any font, and looks typed by a human. inside the product it marks main's voice.

say it: beez. in english the word is rare, so we explain it wherever a stranger meets it first (site hero, README, launch posts), with a dictionary entry: bise /beez/ · french, n. 1. a quick kiss on the cheek. 2. a brisk north wind. 3. a terminal where your agents ship while you think. short form, one line: bise (say: beez): french for a kiss. also a wind. not inside the product: there, the :* says it.

standalone. bise is its own brand: no borrowed colors, no parent logo.

taglines

whereline
site, headlinekiss your backlog goodbye.
site, sublineramble. interrupt. change your mind. i run the agents. you stay in flow.
inside the productideas in. little kisses out. also pull requests.
in reserveyou, but with way more hands. · your team is as big as your ideas.

retired, don't bring them back: "built for engineers who think faster than they type." (not strong enough) · "all the agents. none of the overhead." · "code like a team of ten." (a number is a cap) · "all your ideas. none of the juggling." (sounds like an LLM)

04 · voice and tone

a human, typing fast.

lowercase, always

no capital letter at the start of a word, anywhere: site, UI, messages. it reads like someone typing, not a company talking.

no period at the end of a title

a stack of titles that all end with a period sounds like a list of verdicts. so titles drop their last period: sections, features, lists, UI labels. all your MCPs. all your skills. always on: the periods in the middle stay, only the last one goes. the numbered meanings of the gloss (1. a quick kiss on the cheek) drop it too.

who speaks

inside the product, bise says "i", and "you" is always the user. on the site, we talk to the reader as "you".

four words, no more

the user meets you, main, agents, cards. never "task", "sub-agent", "orchestrator", "hub" or "hands" in the UI.

do / don't

do

say it and keep talking. the work runs in the background, i'm always here.

docs asked v1 or v2; the brief says v2, so i answered.

glm-5 can't read images. pick a model that can, or describe the screen in words.

don't

Welcome! Unleash the power of seamless multi-agent orchestration.

Task #3 (docs) has been resolved by the Orchestrator.

Error 400: invalid_request_error: image_url not supported.

05 · visual identity

terminal brut, with the soul of a bise.

raw terminal credibility: monospace, calm, the product is the visual. plus one warm human touch: the pale pink accent, the :*, a heart for "done".

the background is yours

in the terminal we never paint the background: your terminal's color, transparency and blur show through. we only choose the colors of the text. two themes, light and dark, picked from your terminal's background at start. try the switch in the menu: this whole page follows it.

palette · dark

type

JetBrains Mono for the site and screenshots. in the terminal, the font is yours.

motion

only four things move: the working breeze ∿, the cursor , the typed welcome, and the :* pop. nothing bounces, nothing slides.

06 · symbols

one glyph per thing.

status is a symbol, not a word and not a color. learn them once, read a screen of 30 agents at a glance.

entities

│your message
│the composer
:*main
◇a brief
∴thinking
$bash
λtypescript
↳a sub-call
±a file edit
@a message
▣an image
?a card: needs you
≡compacting (pulsing)

agent status

·starting
∿working
…waiting on an agent
?needs you
✓done
✗failed
○idle
–stopped

marks

✓the agent got your message
✓✓the model read it
•unread activity
ψown worktree
⇄two agents, one file
▸closed · open with a key

07 · ux principles

seven rules for every screen.

1you stay in control, the screen stays calm. agents work quietly; only what needs you gets color.
2everything is readable. prose never wider than a novel line; contrast ≥ 4.5:1.
3progressive disclosure. one line per step, details one key away. scripts are the exception: always in full.
4one symbol per thing.
5the history never lies. it only grows, in arrival order.
6no new vocabulary. you, main, agents, cards.
7honest. no silent failure, no hidden limit, nothing we pretend to have.

08 · the screen

one conversation, all your agents.

bise :*∿ 3 working · ? 1 needs you · ✓ 1 done
the login breaks on safari
:*on it: auth-fix takes it.
✉ docs → mainv1 or v2?
✉ main → docsv2, the brief says so
:*docs asked v1 or v2; the brief says v2, so i answered. ▸ why
? docs needs you
v2 removes /users. document v1 or v2?
agents · ⌥ + number
0 :* main
1 ∿ auth-fix12m · 21%
2 ∿ release3m · 8%
3 ? docsyou
4 … api-v2waits docs
5 ✓ benchdone
you → mainidle · 210k / 1M tokens · 21%
what's on your mind?
⏎ send@ agent⌥0-9 switch/ commands? help
headerbise :*, then only the non-zero counts. the pink one is the one that needs you.
feedthe conversation. prose ≤ 88 columns, in a 91-column reading column; extra width goes to the margin.
agentsone row each: number, status, name, age and context. ⌥ + number jumps to it; numbers never change while an agent lives. hidden under 70 columns.
dividerwho you're talking to (you → main, the name in pink) and, on the right, what they're doing.
composereverything under the divider is slightly raised, like the bottom of an app. your text sits behind a thin bar (faint while empty, pink once you type), at least 2 rows; it grows with you.
key barright under the composer: keys in the text color, what they do dim, a tip on the right when you're idle. in an agent's view it starts with esc back to main.

the first run

what's on your mind?
say it and keep talking. the work runs in the background, i'm always here.
try: "fix the flaky login test, and draft the release note"

09 · three levels

what's for you, and what isn't.

everything on screen belongs to one of three levels. the level decides the look, never the other way round.

1 · needs you
? api-v2 needs you
the v2 schema file isn't in the repo. where is it?
alt+r answer with text · ctrl+x later · ctrl+f full screen
2 · for you
:*docs asked v1 or v2; the brief says v2, so i answered. ▸ why
♡bench is done. p95 at 180 ms, nothing to fix. ▸ report
@auth-fix to you: got it, i'll check logout next.
3 · between agents
✉ auth-fix → releaseheads-up, i'm touching web/src/auth.
✉ release → auth-fixok, i'll mention the fix.

10 · the history

it only grows. in order.

the history is append-only, in arrival order. nothing is grouped by agent, nothing moves later. what changes over time (status, age, open cards) lives outside it: the panel, the header, the card box.

· 14:02 ·
ship the v2 api: endpoints, sdk, docs, migration.
:*that's 30 pieces. i split it and started them.
▸ 47 messages between 30 agents
:*the endpoint agents agreed on one error format; the sdk agents use it too.
▸ 23 messages between 9 agents
✓4 endpoints are done: users, orgs, keys, audit. ▸ reports
· 14:31 ·
▸ 12 messages between 6 agents ∿

11 · reading

a novel line, not a wall.

prose wraps at 88 columns, whatever the terminal width. code goes up to 100, then wraps with a faint ».

found it: safari drops SameSite=None cookies that aren't Secure. the dev server sets the cookie without Secure, so the session is lost on the redirect. added secure: true; the webkit test passes now.

scripts in full

bash and TypeScript scripts are always shown whole, with colors. you should never wonder what an agent actually ran.

λtypescript ✓ 0.4s
async function main() {
  const issues = await tools.github.search_issues({ query: "safari login", limit: 5 });
  // only the open ones
  return issues.filter((i) => i.state === "open");
}
↳ github.search_issues ✓
▸ result · 2 items

tables

no frame, no bars. two spaces between columns, a bold header, and a faint rule with one segment per column. numbers align right. too wide for the screen: the widest column wraps; still too wide: one block per row, key and value.

:*here's where the v2 endpoints stand:
endpoint  owner       status   tests  coverage
────────  ──────────  ───────  ─────  ────────
/users    ep-users    done        21       94%
/orgs     ep-orgs     done        17       91%
/keys     ep-keys     working      9       62%
/billing  ep-billing  waiting

progressive disclosure

itemby defaultopen
thinking∴ thought for 14s ▸the full text
bash, typescriptalways in full—
output▸ output · 42 lines · 1 failedthe output
file edit± edit session.ts ✓ +3 −1 ▸the diff
report✓ bench is done. ▸ reportthe report
brief◇ brief ▸the brief
agent traffic▸ 12 messages between 8 agentsthe messages, in order

12 · cards

only the decisions that are yours.

main answers the obvious questions itself. what's left arrives as a card: a pink bar, who needs you, the question, the choices.

? docs needs you · 1 of 3 · 2m
the brief says "keep old clients working", but v2 removes /users. do we document v1 or v2?
1 v1 2 v2 alt+r answer with text · ctrl+x later · ctrl+f full screen
?a question, or an agent blocked
✗an agent failed
↻a restart failed, rolled back
–confirm dropping an agent
⇄two agents changed the same file
✓done

ctrl+f opens a long card full screen, pgup / pgdn scroll it.

13 · talking to agents

just talk. that's the whole interface.

to main

say what you want, as many things as you want, one after the other. main says who takes what.

the login breaks on safari. oh and draft the release note.
:*on it: auth-fix takes the bug, release takes the note.

to one agent

@name sends a direct message without leaving main. ⌥ + number or ⏎ on an agent takes you inside it; esc brings you back.

did it get my message?

while an agent works, what you send waits for its turn. the marks at the end of your line tell you where it is, like a text message.

skip firefox, only webkit✓✓ the model read it
and log the cookie headers✓ the agent got it, waiting for its turn
also the logout path· sending

changing your mind

you just say it, like you would to a person. main tells the agent, plainly, and confirms.

:*docs asked v1 or v2; the brief says v2, so i answered. ▸ why
no, v1 for docs
:*told docs: v1, you changed your mind.
@ main → docs the user changed their mind: use v1, not v2.

14 · images

show it, don't describe it.

drag a screenshot into the terminal, paste one with ctrl+v, or pick one with @. an image is one pink chip in your text; delete the chip, the image is gone.

attached
▣ 1 shots/login-mobile.png1170×2532 · 310 kB
▣ 2 clipboard2048×1536 · resized to fit 2048
backspace on a chip removes it
compare ▣ 1 with the design ▣ 2, the button is off

the attachments sit in their own small box, under the divider and above your message: attached in its top border, one row per chip. the chips stay in your text, wherever you put them, with the same number.

a model that can't read images says so in plain words, with a way out:

✗ glm-5 can't read images. pick a model that can (/model), or describe the screen in words.

⚠ drawing the picture itself in the terminal comes later.

15 · onboarding

hi, i'm bise :*

six short steps, one choice each: the welcome, your theme, your model, your folder (and one honest thing), how it works in three lines, then the real thing. after that, no tour: each hint shows once, next to the thing, the first time it happens.

click inside, then press enter to go on.

16 · live

ten agents, one calm screen.

an 80-second simulation of a real session: you ask, main starts ten agents, they talk, one needs you, you answer. type your own messages in it at any time.

every screen, one by one: all the screens

17 · keys

few keys, all shown where they're used.

keysdoes
⏎send to the agent in view; during a turn, steer it
@namea direct message from main
⌥ + 0…9go to main or agent n
ctrl+k ctrl+jselect the next / previous agent; ⏎ enters it, space previews it
escback to main
ctrl+cinterrupt; again to quit (agents keep running)
alt+r ctrl+x ctrl+fanswer a card · later · full screen
ctrl+g ctrl+n ctrl+pshow the cards · next · previous
ctrl+oopen or close everything folded: thinking, outputs, diffs, agent traffic
ctrl+vpaste an image
ctrl+rvoice
ctrl+`a shell in the folder
/commands

18 · copy deck

the words, exactly.

every string the UI shows. when a string isn't here, write it in the same voice and add it.

wheretext
headerno agents yet · ∿ 3 working · … 1 waiting · ? 1 needs you · ✓ 1 done
panelagents · ⌥ + number · + 21 more · ▸ 4 archived
first runwhat's on your mind? · say it and keep talking. the work runs in the background, i'm always here.
inside an agentyou're talking to auth-fix directly. main isn't in the loop. esc back to main.
composer⏎ send · @ agent · / commands · ⏎ steer · ctrl+c interrupt
history▸ 12 messages between 8 agents · ∴ thought for 14s · ▸ output · 42 lines · ✓ turn done · 2m 10s
cards? docs needs you · alt+r answer with text · ctrl+x later · ctrl+f full screen
direct@ auth-fix to you: …
not delivered✗ not delivered: auth-fix stopped. ⏎ send again · esc drop
provider down✗ the model provider answered 503. retrying in 8s (2 of 5). · auth-fix and release are waiting on it; nothing is lost.
onboardinghi, i'm bise :* · ideas in. little kisses out. also pull requests. · press enter ↵

19 · resources

everything else.

screensevery screen of the product, one by one
livethe live simulation; type your own messages
onboardingthe first launch
bise.devthe landing page
in the repothe full book with the spec and the implementation plan: projects/switchboard/docs/brand/bise-book.md, and the work issue by issue: bise-issues.md