your engineering agent // v0.4

otto joins your meetings.
otto ships the changes.

decide it in standup, see a draft pr by lunch. otto reads your meeting transcripts, pulls out the code-shaped action items, and opens reviewable pull requests on the right repo. never auto-merges.

otto > idle · 9×

how it works // three steps

standup → pr

otto runs in the background. it pulls each new transcript and feedback item off the queue, figures out what changed, and writes a draft pr a human can land in minutes — not days.

01
notebook granola / zoom

otto listens

connect granola or zoom once. otto pulls every new meeting transcript on its own — never joins the call. the widget covers anything you'd file from a dashboard between meetings.

02
thinking extract / route

otto thinks

otto extracts the request, finds the relevant repo and file, and decides whether the change is small enough to draft on its own.

03
diff diff / branch

otto drafts

a draft pr lands in your code host with the original feedback attached. you review, tweak, merge — or hand it back. otto never auto-merges.

surfaces // where otto shows up

four places.
one otter.

otto’s native surface uses paper + amber. inside third-party platforms — github, slack, your ide — only the small avatar carries the brand. host design wins everywhere else.

task

otto’s daybook

native · paper + amber

queue, status, history. the otter front and center.

branch

code-host pr card

github · gitlab · bitbucket

otto’s draft, in your normal pr ui. only the avatar marks it.

ripple

team chat

slack · teams · discord

“3 drafts ready for review.” one ping per batch.

pawprint

ide inline panel

vscode · cursor · jetbrains

suggested edits show up next to the code, with the source.

voice // first-person, brief

how otto talks

otto writes its own pr descriptions. confident, brief, first-person. never peppy, never apologetic, never emoji-heavy.

otto otto · pr #284 · acme/web
i drafted this from widget feedback. the export button on the orders dashboard fires even with zero rows selected. added a disabled state and an aria-disabled hint. tests pass locally. the original report is linked below — please confirm the empty-state copy reads okay.

live // the queue right now

today’s daybook

a snapshot of what otto’s holding. the pixel pouch in the otter’s paws shows the same status as the row.

otto otto 3 in queue · 11 today
#284 add disabled state to orders export button acme/web drafted
#283 fix sticky header overlap on settings page acme/web routing
#282 extract metric definitions from meeting notes acme/docs extract
#281 could not route — unknown component reference acme/api error

get started // early access

wake otto up.

connect granola or zoom, drop the widget on a dashboard, and otto starts drafting. v0.4 is read-only-by-default — every diff waits for a human.

open dashboard how it works