Skip to content

An internal experiment

Our own chat,
just in case.

corvid-chat is an in-house experiment, not a product. It is a Discord-shaped, end-to-end-encrypted, federated chat we built on our own primitives: AlgoChat for the encryption and Merlin for the agent in the room. Written in Rust.

Status
Built and working, but not actively developed. We run on Discord day to day. This is the house we keep warm: if Discord ever stops fitting how the flock works, the bones of our own are already standing.

A corvid-chat conversation between a user and the Merlin bot. Multiple channels in the sidebar, members panel showing both participants, the AI reply rendered with its own avatar.
The @ mention dropdown showing PEOPLE, 'you' and 'merlin (bot)'. Filtered while typing.
@ mention dropdown. Type @ to bring up channel members
Edit and delete actions on your own messages, with the conversation flow intact.
Edit + delete. Your own messages get inline actions; deletes are tombstones (server keeps metadata, drops ciphertext)

What works today

No roadmap, no promises. Just what is actually built and runs.

End-to-end encrypted

Every message is wrapped in an AlgoChat envelope (X25519 + ChaCha20-Poly1305, with a two-level ratchet) before it leaves the client. The server only ever sees ciphertext.

Federated

Servers are Ed25519-signed peers. Run one at home or point at a shared one; it is the same code either way. Messages route across federation with anti-replay protection.

Merlin lives in a channel

A per-server Merlin bridge connects to any HTTP chat endpoint. Typing @merlin in a channel routes through it; the bot is a regular chat client with its own keys.

A real chat client

An iced desktop client with the parts you expect: a channel sidebar, @ mention dropdown, slash commands, per-channel drafts, unread counters, and edit + delete on your own messages.

How it's built

A Rust workspace that runs as a single binary or via Docker + Caddy.

Crates

  • corvid-chat-proto. Wire frames + ids
  • corvid-chat-crypto. AlgoChat envelope wrapper
  • corvid-chat-server. Axum + SQLite + federation
  • corvid-chat-client. iced desktop UI
  • corvid-chat-cli. Admin CLI + invite redeem
  • corvid-chat-admin. Ratatui TUI
  • corvid-chat-merlin-bridge. AI bridge

How it runs

  • • Local LAN, scripts/run-local.sh
  • • VPS, Docker + Caddy with auto-TLS
  • • VPS, a hardened systemd unit
  • • Federation, a full mesh of Ed25519-signed peer dials

Built on the CorvidLabs spine

The reason a side experiment can be this complete: it stands on primitives that already work.