Real-time collaboration
kapi holds one project's graph for one person working from one checkout. Bowrain is where a team works on the same content at the same time. The web app and the desktop app are equal clients of one server, so a project is a shared, live workspace rather than a file each person edits alone.
A workspace is shared by a team: invite teammates with roles, bound to a language or a point where that fits, and keep parallel work apart on streams that merge back when ready.
The narration uses terminology that has since been retired. The interface and the behaviour shown are unchanged.
Presence: see who is here
Open a project and you see your teammates: their names and avatars appear on the blocks they are editing, and move with them as they navigate. You always know who is on block 42 before you start typing there, and you watch a colleague work through a file in real time. Presence is broadcast by the server to every client watching the same project, in the browser or in the desktop app.
Live updates
Edits propagate as they happen. When a teammate edits a block, reviews one, or updates a term, your views update without a manual refresh and the progress bar moves as the team works. The web app subscribes to a server event stream and the desktop app to a project event stream, so a change one person saves shows up for everyone watching the project.
Content itself is saved over the server's REST API, which is authoritative: editing is block-level, and if two people save the same block the last write wins. There is no character-by-character co-editing of a single block; live cursors and the roster are presence only. The model is the same in the browser and on the desktop.
Review handoff
Drafting and review are different jobs, and Bowrain routes them. Work is assigned as tasks (translate, review, review source, fix quality); a task shows up in the assignee's activity feed, they claim it, do the work in the review session, and mark it done, and the next person sees the handoff live. A reviewer marking a block reviewed is a presence-and-progress event everyone watching the project sees. Corrections a reviewer makes feed the voice correction loop, so a fix made once becomes a check that protects the whole project.
Web and desktop, in sync
Both apps connect to the same server and the same project. Which you reach for is a matter of where you work, not what you can do:
| Web | Desktop | |
|---|---|---|
| Install | Nothing; open a URL | Native app (macOS / Linux / Windows) |
| Real-time presence & live updates | Yes | Yes |
| Voice, terms & memory context | Yes | Yes |
| Works offline | No (always online) | Yes: edit on a flight; changes queue and sync on reconnect |
| Local footprint | Browser session | Cache only: a content cache, an offline edit queue, and memory and terms mirrors |
| Best for | Quick access, reviewers, occasional contributors | Daily contributors, large files, unreliable connectivity |
Both are real-time clients of the same server, so presence, edits, reviews, content memory, and terms are shared and consistent across them: a reviewer in the browser and a contributor in the desktop app see each other's presence, and each change one saves appears in the other's view without a refresh.
The desktop app's local store is a working copy of the server, never a source
of truth: it speeds up editing and lets you work offline, but the
authoritative state lives on the server. Authoring local files and project
configuration, the kapi.yaml recipe with its content, flows, plugins,
languages, coordinates and voice binding, is
kapi's job, not the desktop app's. Sourcing
content from a filesystem or a git checkout happens server-side through
connectors.
Offline on the desktop
The desktop app keeps a local cache of the project, so you can keep working when the network drops: on a flight, in a tunnel, or during server maintenance. Edits, reviews, and memory updates made offline queue locally and replay in order the moment you reconnect, then rejoin the live session. You never lose work to a dropped connection, and you do not have to think about sync; it happens on reconnect.
See it
- The editor: the editing surface presence and live updates appear in
- Workspaces & members: invite teammates and assign roles
- Voice and corrections: how a reviewer's correction becomes a shared check