# chanx-kit > Realtime features you copy into your app: notifications, chat, presence, AI agent streaming and voice, for Node, Python and Go servers, with React UI that works with any of them. Kits are copied in with copit and owned by the project. ## Get started - [Build a live notification inbox](https://kit.chanx.dev/getting-started.md): Tutorial: a live notification inbox on Node, Python or Go, then a second kit added with one command. - [Start a project on your framework](https://kit.chanx.dev/start-a-project.md): Create a starter app on Express, Fastify, Hono, FastAPI, Django, net/http, chi, gin, Echo or Fiber, with React and a kit wired. - [Set up an existing app](https://kit.chanx.dev/set-up-your-app.md): Add chanx to an existing app: the server for each framework, then the typed React client. - [Add kits to your app](https://kit.chanx.dev/add-to-your-app.md): Set up the kit registries, add a kit, mount it on your server and show it in the browser. - [How it works](https://kit.chanx.dev/how-it-works.md): How kits, topics, contracts and the channel layer fit together, and why kits are copied instead of installed. ## Guides - [Add a chat room with who's online](https://kit.chanx.dev/chat-room.md): Guide: a chat room with history and a live roster, on Node, Python or Go with React. - [Stream an AI agent to the browser](https://kit.chanx.dev/agent-streaming.md): Guide: stream an AI agent to React over AG-UI on a WebSocket, with cancel and shared runs. - [Add voice](https://kit.chanx.dev/voice.md): Guide: live captions, text to speech and a voice agent you can interrupt, with swappable providers. - [Send across processes with Redis](https://kit.chanx.dev/multiple-processes.md): Guide: reach browsers from workers and other replicas through Redis, across server languages. - [Use and style the UI kits](https://kit.chanx.dev/ui-kits.md): Install, compose and style the React UI kits, which bind to a contract rather than one server. ## Server kits - [AG-UI](https://kit.chanx.dev/kits/ag-ui.md): Serve the AG-UI agent-user interaction protocol over a websocket, so any AG-UI frontend works unchanged. Provider-agnostic: yield events from any agent. Optionally broadcasts a run to every connection on its thread, replaying it to one that joins part-way through. Servers: Node, Python, Go. - [Audio stream in](https://kit.chanx.dev/kits/audio-stream-in.md): Stream microphone audio in over the socket and get transcripts back, from any speech-to-text provider. Defines the transcriber contract; provider kits plug in a stream. Bounded streams, per-user limits, gap detection and watcher fan-out. Servers: Node, Python, Go. - [Audio stream out](https://kit.chanx.dev/kits/audio-stream-out.md): Speak text to a session's listeners from any text-to-speech provider. Defines the synthesizer contract; provider kits plug in audio. Utterances queue in order, an interruption clears them, late joiners are replayed, and playback marks record what was actually heard. Servers: Node, Python, Go. - [Testing harness](https://kit.chanx.dev/kits/chanx-testing.md): Backend-agnostic test harness for kit components: one suite runs against both Django Channels and FastAPI / fast-channels. Installed automatically by kits whose copied tests use it. Servers: Python. - [Conversation store](https://kit.chanx.dev/kits/conversation-store.md): Persistence for an agent conversation, held as an opaque blob per thread so one backend serves every agent framework. Ships an in-memory default for demos and tests. Servers: Python. - [Deepgram](https://kit.chanx.dev/kits/deepgram.md): Deepgram behind the voice contracts: live speech-to-text (Nova) and streaming text-to-speech (Aura). Install both, or one part with `--only stt` or `--only tts`. The API key stays on the server. Servers: Node, Python, Go. - [Django message store](https://kit.chanx.dev/kits/django-message-store.md): Durable chat history in your Django database, with an admin and a read-only REST endpoint. Drop-in replacement for the room-chat kit's in-memory default. Servers: Python. - [ElevenLabs](https://kit.chanx.dev/kits/elevenlabs.md): ElevenLabs behind the voice contracts: realtime speech-to-text (Scribe) and streaming text-to-speech. Install both, or one part with `--only stt` or `--only tts`. The API key stays on the server. Servers: Node, Python, Go. - [Fake voice](https://kit.chanx.dev/kits/fake-voice.md): A transcriber and a synthesizer that need no provider and no key: speech is transcribed as a scripted sentence, text is spoken as a tone per word. For demos, UI work and CI. Install both, or one part with `--only stt` or `--only tts`. Servers: Node, Python, Go. - [Media stream in](https://kit.chanx.dev/kits/media-stream-in.md): The plumbing for media a client streams in: bytes that travel as base64, chunks put back in order with gaps reported, and a bounded real-time intake with keepalive and idle handling. The base the audio kits build on. Servers: Node, Python, Go. - [Media stream out](https://kit.chanx.dev/kits/media-stream-out.md): The plumbing for media the server streams out: producers run one at a time per session and can be cut off as a whole, and what was sent is kept so a connection joining part-way is replayed. The base the speech output kits build on. Servers: Node, Python, Go. - [Notification](https://kit.chanx.dev/kits/notification.md): Fan out notifications to a user's live connections from anywhere in your app: a signal, a background worker, or another service. Servers: Node, Python, Go. - [OpenAI](https://kit.chanx.dev/kits/openai.md): OpenAI behind the voice contracts: realtime transcription and text-to-speech. Install both, or one part with `--only stt` or `--only tts`. The API key stays on the server. Servers: Node, Python, Go. - [Pipecat bridge](https://kit.chanx.dev/kits/pipecat-bridge.md): Run a Pipecat pipeline behind a chanx transcriber topic, so any of Pipecat's speech-to-text services speaks the transcriber contract. chanx keeps the socket; Pipecat never sees a transport. Servers: Python. - [Presence](https://kit.chanx.dev/kits/presence.md): Track who is present in a room, document or tenant, and tell everyone when that changes. Pluggable store; ships with an in-process default. Servers: Node, Python, Go. - [Pydantic AI over AG-UI](https://kit.chanx.dev/kits/pydantic-ai-ag-ui.md): Run a Pydantic AI agent over the AG-UI protocol on a chanx websocket: streamed text, tool calls and human-in-the-loop approvals, with the conversation kept server-side and replayed to a reconnecting client as MESSAGES_SNAPSHOT. Servers: Python. - [Redis presence store](https://kit.chanx.dev/kits/redis-presence-store.md): Shared presence roster backed by Redis, so presence stays correct across multiple workers. Drop-in replacement for the presence kit's in-memory default. Servers: Node, Python, Go. - [Room chat](https://kit.chanx.dev/kits/room-chat.md): A chat room: history replayed on connect, plus a live roster from the presence kit. Pluggable store, with an in-process default for demos and tests. Servers: Node, Python, Go. - [Voice agent](https://kit.chanx.dev/kits/voice-agent.md): Talk to any AG-UI agent: speech is transcribed, each utterance starts a run, the reply is spoken sentence by sentence as it streams, and speaking over it interrupts, keeping only what was heard. Provider-agnostic on all three sides. Servers: Node, Python, Go. ## UI kits - [AG-UI thread](https://kit.chanx.dev/ui/ag-ui.md): Headless state for one AG-UI conversation: messages folded from streamed events, the run in flight, run and cancel. Replay-safe when several tabs share a thread. - [Audio helpers](https://kit.chanx.dev/ui/audio.md): The pure audio helpers the voice UI kits share: resampling, PCM16 conversion, fixed-duration chunking, levels and base64. No browser APIs, so they run and test anywhere. - [Chat room](https://kit.chanx.dev/ui/chat.md): A chat log with history on join and a composer, for any server speaking the chat contract. Shows the room's roster through the presence UI kit. - [Notification feed](https://kit.chanx.dev/ui/notification.md): A live notification feed with per-topic acknowledgement, for any server speaking the notification contract. - [Player](https://kit.chanx.dev/ui/player.md): Play what a server speaks, for any server speaking the synthesizer contract. Headless playback with a jitter buffer, instant interruption and playback marks back to the server, plus a React player. - [Presence roster](https://kit.chanx.dev/ui/presence.md): Who is here, kept current from joins and leaves, for any server speaking the presence contract. - [Transcriber](https://kit.chanx.dev/ui/transcriber.md): Record from the microphone and show live captions, for any server speaking the transcriber contract. Headless capture (resampled PCM16 in numbered chunks), a transcript store, and React recorder and caption components. - [Voice agent](https://kit.chanx.dev/ui/voice-agent.md): Talk to an agent: an open microphone, live captions, the reply spoken as it streams, and interrupting by speaking. Composes the transcriber, player and ag-ui UI kits over one session. ## Optional - [Everything in one file](https://kit.chanx.dev/llms-full.txt): every page above, in order.