skip to content
sayan

index

Kaiwa

Team chat with issues, projects and docs built in.

status
waitlist
started
2024
updated
oct 2026
stack
.net 10, postgresql, ef core, bun, better auth, react, tanstack, shadcn/ui, plate, livekit, electron, capacitor
site
kaiwa.im
The #checkout channel in Kaiwa, with the issue created from the conversation open beside it and a chip linking the message to that issue.

Most teams decide things in chat, then copy the decision into a tracker, and the context gets lost on the way. Kaiwa keeps both in one place. A message becomes an owned issue in one move, the issue links back to the conversation, and the message shows a chip for the work it started.

I’m building it to move our own team of ten off Slack. If it works for us every day, it goes out to the waitlist.

what you can do

  • Talk in channels, private channels, threads and DMs, with mentions, reactions and files. Start a call from any conversation. It opens as a small widget, and the call stays in the history as a card.
  • Turn any message into an issue, or a whole thread into a project brief with milestones and first issues. If the conversation is private, Kaiwa shows who will be able to read the copied text before anything is created.
  • Plan on a list or a board, with priorities, labels, assignees, cycles and saved views you can share by link.
  • Run projects with start and target dates, milestones, dependencies and health updates, on a timeline you can drag. Initiatives roll project health and progress up into one place.
  • Write docs next to the teams and projects they belong to, in a rich editor that stores plain Markdown.
  • One inbox for what needs you: mentions, replies and assigned work.
  • Optional AI, on a local model or any OpenAI-compatible API. It drafts project updates from the channel, posts a weekly digest and suggests how to triage new issues. A person still posts the update or applies the suggestion.
  • Connect Claude Code, Codex or any MCP client. Bots, webhooks and agents go through the same API the app uses, and their work is labelled as theirs.
The Web team's issue board with Backlog, Todo, In progress and Done columns, labels and assignees.
Every issue on one board, grouped by status.
The Checkout v2 project overview with its lead, dates, linked channel, an on-track update, milestones and the conversations it came from.
A project with its linked channel, latest update, milestones and decisions.
A timeline of projects with milestones, a today marker and a dependency arrow between Checkout v2 and Billing portal.
Projects on a timeline you can drag, with milestones and dependencies.

how it fits

web · desktop · mobile · MCP
REST · realtime · MCP validated against a contract generated from C# types
one domain layer chat · work · planning · docs · bots
PostgreSQL events · historyoutbox · jobs
files disk or S3Garage
optional LiveKit callsAI · Whisper

The app, bots and MCP all go through the same rules, so an automation can’t do something a person couldn’t. Writes are safe to retry, and edits carry a revision, so two people changing the same issue get a conflict instead of silently overwriting each other. Every change, its event and its history are saved in one transaction, so realtime events replay from where a client left off. A laptop waking from sleep catches up without a reload.

The API contract is plain C# records. The server generates its OpenAPI document from them at startup, validates every request and response against it, and builds the MCP tool schemas from it. The TypeScript client is generated from the same document, so the three can’t drift apart.

The Checkout v2 spec doc with headings, a list, a rollout table and an open question.
Docs live with the project and stay plain Markdown underneath.

The screenshots use a seeded demo workspace with made-up people, not real users.

how it got here

  • 2024. A small group chat app on Django.
  • August 2026. Rebuilt on Cloudflare Workers with a React client. It became agent-first: you mentioned a coding agent in a channel and it worked on your own machine, through an Electron desktop app.
  • Early October 2026. I changed direction. Ordinary team chat comes first, with Linear-style work tracking built in and APIs for bots. Agents became optional, and the client was rebuilt around glass and pill navigation on shadcn/ui.
  • Late October 2026. I moved the backend to .NET and PostgreSQL so it runs on hardware we own, and dropped the Cloudflare runtime. Since then I’ve added planning (timelines, initiatives, docs), calls, and the optional AI drafting.

where it is now

The landing page at kaiwa.im takes waitlist sign-ups and tours the app with real screenshots. The self-hosted backend, the web client and the desktop app work end to end. Next up: deploying it on our own machine, then moving our team over from Slack in stages.

log

  • 2026-10-25 · new screenshots and this write-up.
  • 2026-10-24 · docs get a rich text editor that stores Markdown.
  • 2026-10-24 · the API contract is now generated from C# records.
  • 2026-10-24 · timeline, initiatives, docs, project channels and AI-drafted updates.
  • 2026-10-24 · the landing page tours the app with real screenshots.
  • 2026-10-23 · kaiwa.im redesigned, still serving the waitlist.
  • 2026-10-23 · calls open as a widget and leave a card in the chat.
  • 2026-10-23 · backend moved to .NET and PostgreSQL, self-hosted.
  • 2026-10-07 · new screenshots and the first write-up.
  • 2026-10-06 · waitlist landing page on kaiwa.im.
  • 2026-10-06 · new backend and the glass client.
  • 2026-10 · direction change: team chat with work tracking, agents optional.
  • 2026-08 · rebuilt on Cloudflare Workers, agent-first with a desktop app.
  • 2024-05 · first commit.