Your next developer
already knows
the codebase. kino.

kino studio · an editor with an agent inside

It reads your repository before it touches it. Then it runs your app, clicks through it like a tester, follows production errors back to the line that caused them, and hands you the fix to keep or undo.

Download kino studio Watch it work macOS, Windows, Linux · works with your Claude Code login, an API key or Ollama
SCROLL
kino studio on a small web shop · real recording, nothing stagedlong waits sped up
01 · Studio

Point at it.
kino changes the code.

Your app runs in a sandbox, in a browser tab inside the editor. Select the thing that's wrong, say what you want, and kino edits the source, reloads and checks the same screen.

01Select
02Note
03Edit
04Check
localhost:5173/productsiPhone 15
Productsh1.title
Blue mug
Red mug
Travel mug
Espresso cup
your note on h1.titleThe nav covers the page title on phones.
src/styles.css+1 −4
- .page { padding: 0 20px 40px; }
+ .page { padding: 88px 20px 40px; }
- @media (min-width: 768px) { … }
UndoKeep
✓ checked on iPhone 15: the title now sits below the nav
02 · Pair mode

Work side by side.
Same files, two cursors.

Pair with kino and the editor splits: you on the left, kino on the right. Its edits land in the open files as you watch, it sees your unsaved typing, and it keeps off the lines you're working on.

01You type
02kino edits
03You talk
04It checks
Cart.jsx · pair⌘⌥K
yousrc/pages/Cart.jsx
8const r = await fetch('/api/cart')
9if (r.status === 401) {
10 navigate('/login'
11}
12setItems(data.items ?? [])
kinosrc/pages/Cart.test.jsx
14it('shows an empty cart', ...)
15it('sends a 401 to login', async () => {◀ kino
16 mockFetch(401)
17 expect(nav).toBe('/login')
18})
youalso keep the cart if the request just times outqueued
kinoLine 10 is yours, so I'm leaving it. Adding the timeout case to the tests.
kinoSaved Cart.test.jsx before running it · 6 passed
03 · Debug mode

It clicks every button before your users do.

kino starts the app, walks every page on desktop and phone screens, types into the forms and submits them. It replays each problem before reporting it, so you get a bug with steps, a screenshot and the line of code.

  • Shows up in the Problems panel, like a compiler error
  • "Fix it" on any finding
kino debug · shop · 3 screens0 found
04 · Incidents

A Sentry error, with the whole story.

When Sentry reports something new, kino finds the user's PostHog session, sees what they did, reads the logs of every service around that second and opens your code. You start from the cause, not the stack trace.

01Error
02Session
03Logs
04Cause
05PR
POSTHOGsession 01a1c0…e2 · 0:37
Incident · SHOP-1A1.2k events · 340 users

TypeError: Cannot read properties of undefined (reading 'length')

User did
−38s home
−31s products
−23s add
−4s cart
0s blank
Logs
[−0.4s] api GET /api/cart 401 session expired
[−0.4s] auth token expired for user 8812
Cause
src/pages/Cart.jsx:10 stores data.items without checking r.ok; after a 401 it's undefined.
Fix
Branch kino/fix-shop-1a, ticket linked, a PR with only the fix's files.
Root cause found
LOGSCloudWatch · Loki · Datadog · Sentry
05 · Architecture

Draw it. kino builds it. Drift can't hide.

kino draws your architecture from the code, every box pointing at the file and line it came from. Draw what should exist and kino plans it, you approve, and it builds it, databases and queues included. Every branch and pull request is then checked against the drawing and against the bugs your team already fixed once.

  • Discover from code, ask kino, build the drawing, check drift
  • Review a branch or a PR, post the review when you say so
  • Bug memory learns past bugs from your tickets and fixes
  • Advice only. It never blocks a merge.
FRONTENDSERVICEDATABASESERVICEQUEUENEW ON THIS BRANCH webapipostgresordersorder-createdapi-gateway web → orders skips the gateway
DRIFTweb calls orders directly; the drawing says traffic enters through api-gateway.
PAST BUGSame shape as "cart crashes on an expired session", fixed before in Cart.jsx.
06 · Everything in the box

Everything else kino does, in one editor.

In the editor

Agent panelAgent, Ask, Plan, Review and Debug modes. ⌘L adds your selection, @ adds files, folders and problems.
Keep or undo, per changeEvery edit shows inline. Keep or undo one hunk, one file or everything.
Pair modeSplit editor, live edits, your typing respected. Push and PRs ask first.
kino browserYour app in a tab: select an element, leave notes, read console and network, switch between desktop and phone sizes. Watch kino drive it.
Claude Code panelYour own Claude Code next to kino, in the sandbox or on your Mac, with sessions, diffs and per-project permissions.

Sandbox

A container per projectYour folder mounted live, toolchains installed from the repo, Docker inside for the app's own services.
Ports and networkServers forwarded to localhost automatically. Lock the network to an allow-list, or turn it off.
Runs the app for youkino works out how to start it, tries it, and saves the recipe for next time.

Finding and fixing

Debug modeExplores the running app on three screens, replays each bug before reporting it, Fix it on any finding.
IncidentsWatches Sentry, joins the PostHog session and the logs (CloudWatch, Loki, Datadog), finds the cause, opens a ticket and a fix PR.
Tickets anywhereGitHub Issues, Jira, Linear and ClickUp, created from the report and linked to the PR.

Architecture and review

Architecture canvasDiscover from code, ask kino, build the drawing, check drift, define your own connection types.
kino reviewEvery branch or PR checked for drift and look-alikes of past bugs, shown on the canvas.
Bug memoryLearns from the bugs your team already fixed, so the same one doesn't come back.
Works with Claude Code tookino arch mcp gives any agent your drawing and its drift.

Your team's way of working

ProcessesTicket to PR, answering review bots, answering reviewers: drawn as flows kino runs step by step, waiting for people where it should. Bring your own diagrams.
KnowledgeLearns the repo, your docs and handbooks; optional domain specialist for your product's rules, with sources.
ConnectionsSentry, PostHog, log stores and trackers set up on one page, tested in place, keys kept in your keychain.
Any modelYour Claude Code login, Anthropic, OpenAI or Ollama, per project or per step. kino's own coder or Claude Code writes the code.

Safety

You approve what leavesPush, PRs, comments, tickets: asked one call at a time. Force-push, hard reset and merging are never done.
Stays in its folderFiles change only where kino works; heavy commands wait when memory is low; secrets never reach prompts or logs.
The CLI, tooThe same agent in your terminal: npx kino-cli, with ask, auto-edit, plan, research and auto modes.
07 · kino vs Claude Code

Same model, same tickets. Fewer tokens, and it stays in scope.

Tickets resolved
8 / 8Claude Code: 8 / 8
kino100%
Claude Code100%
Tokens per ticket
−44%123k vs 221k
kino123k
Claude Code221k
Stayed in the files the ticket allowed
8 / 8Claude Code: 6 / 8
kino100%
Claude Code75%
Time and cost per ticket
1.1 minvs 1.3 min · $0.22 vs $0.25
kino1.1 min
Claude Code1.3 min

How it was measured. Eight coding tickets (two features, a bug and five accounting-domain tasks) on the same small Python repo, one attempt each, November 2026. Both agents ran claude-opus-5-5 at high effort through the same Claude Code login, got the same ticket and conventions, and had to push a branch and open a real PR. A ticket counts as resolved when hidden tests, written before the runs and never shown to either agent, pass on the PR. Time is the median, tokens and cost the mean (cost at API list price). Both resolved every ticket, so this doesn't show either one is more accurate, and eight tickets is a small sample. The harness ships with kino, so you can rerun it on your own tasks.

Download

Open your repo.
kino takes it from there.

macOS

macOS 12 or newer · signed and notarized by Apple

Windows

Windows 10 or newer · x64

Linux

x64 and arm64 · unpack, run bin/kino-studio

Prefer the terminal? The same agent as a CLI: npx kino-clibrew install dogukangun/tap/kino-cli