Skip to content

New1Direction/ohiyo

Ohiyo

A free, self-hostable Discord alternative — servers, channels, DMs, and real-time voice / video / screen-share, with end-to-end encryption, a sandboxed plugin system, and a brand of its own. Rust on the backend, React 19 + Tauri on the desktop. No subscriptions, no paywalled features, no telemetry. And launch your own encrypted server in one tap — Realms-style hosting where the box only ever holds ciphertext, with export and self-host always one click away.

Ohiyo on the Daybreak light theme — cream and coral, with channels, chat, and member list Ohiyo on the Dusk dark theme — the same client in dark mode

Kikka, the coral chinchilla mascot

Status: v0.2.0 public beta — early but real. The hosted app is live at app.ohiyo.gg, the public site is live at ohiyo.gg, and 27 end-to-end suites are green. Desktop builds are in Releases; Mac builds are beta/ad-hoc signed until Apple notarization is complete.


Highlights

  • End-to-end encryption — DMs and group chats are encrypted with the Signal Protocol. Keys live on your devices; the server only ever relays ciphertext and never sees your messages. Multi-device, with disappearing messages, safety-number verification, padded encrypted plaintext, encrypted private attachments, and Privacy Mode for quieter metadata. (See e2e suites 19-e2e-dm, 20-disappearing, 21-multidevice, 22-group-e2e, 26-privacy-mode, 27-private-dm-links.)
  • Instant Servers — launch your own end-to-end-encrypted community server in one tap. We host it (Minecraft-Realms-style) but the box only ever holds ciphertext — export anytime, or graduate to your own box, or self-host for $0; all for less than one Discord Nitro. (Phase 1 shipped — control plane + provisioning; design + plan in docs/superpowers/.)
  • Text — servers, channels, threads-of-thought, DMs, reactions, edits/deletes, attachments, read receipts / delivered state on DMs.
  • Voice & video — WebRTC voice, video, and screen-share, with Discord-like live voice rows, a pre-join roster, and a “Ready to join?” preview with Join muted, so you can see who is already in a room before hopping in. Peer-to-peer with STUN on LAN; optional coturn (infra/coturn/) for symmetric-NAT users, or an optional LiveKit SFU (infra/livekit/) for larger rooms.
  • Plugins — arbitrary third-party plugins run in a genuinely isolated Web Worker sandbox: no network, no DOM, no token access, even via the prototype chain. See client/src/plugins/.
  • Design — the Daybreak light theme (cream + coral, Quicksand + Inter) and a Dusk dark theme, with a real motion system and reduced-motion support.
  • Desktop-native — Tauri app with native notifications, deep links, and an encrypted local vault for sensitive cache namespaces; the web build runs anywhere.
  • Fast private actions — Ctrl/⌘K jumps to channels and also exposes quick actions for Privacy Mode, one-time private DM links, and joining an active voice room.

Tech stack

Layer Tech
Server Rust, axum 0.8, sqlx + SQLite, WebSocket gateway
Client React 19, TypeScript, Tailwind CSS v4, Vite
Desktop Tauri 2
Realtime WebRTC (voice/video/screen-share), WS gateway with one-time tickets
Deploy Fly.io + Docker (see DEPLOY.md)
Quality ESLint (hooks-as-error), tsc, unit tests, cargo test, 27-suite e2e, GitHub Actions CI

Repo layout

server/        Rust axum + sqlx server (migrations/, src/, Dockerfile, fly.toml)
client/        React + Vite app and Tauri shell (src/, src-tauri/)
e2e/           Node-driven end-to-end suites (NN-*.test.mjs + harness)
infra/coturn/  Optional TURN server for WebRTC behind strict NATs
brand/         Mascot (Kikka) + brand assets (Daybreak)
site/          Public landing page (deploys to ohiyo.gg)
docs/          Design specs & plans
CHANGELOG.md   Release notes (Keep a Changelog)
DEPLOY.md      Production deploy guide (Fly.io)
UX-GATES.md    UX acceptance gates

Quickstart (local dev)

Prerequisites: Rust (stable) + Node 22+ (22.6+ for unit tests).

1. Server (http://localhost:3000)

cd server
cp .env.example .env          # set JWT_SECRET — `openssl rand -base64 48`
cargo run                     # migrations apply on startup

2. Client (Vite dev on http://localhost:1420, talks to :3000)

cd client
npm install
npm run dev

Open http://localhost:1420, register an account, create a space, and start talking.

Desktop build

cd client
npm run tauri build           # produces the platform bundle (.dmg on macOS)

The packaged app connects to the backend in client/.env.production (VITE_SERVER_URL, e.g. https://ohiyo.fly.dev or your own server). The public beta uses the hosted Ohiyo backend; you can also point the app at your own Fly app, self-hosted server, or custom home. See DEPLOY.md to stand one up.

Testing

cd client
npm run test:unit     # unit tests (Node 22.6+)
KIKKA_ORIGIN=http://localhost:1420 npm run test:e2e   # full suite (27)
KIKKA_ORIGIN=http://localhost:1420 npm run test:e2e receipts   # filter by substring
npm run lint          # ESLint — react-hooks rules are errors
npm run typecheck     # tsc --noEmit

The server and Vite dev client (port 1420) must both be running for e2e. On every push, CI runs the full gate: ESLint, tsc, unit tests (test:unit), client build, cargo fmt --check, cargo clippy -D warnings, cargo build, and cargo test.

Deploy

Production runs on Fly.io, the browser app is deployed on Cloudflare Pages, and the landing site is published to GitHub Pages. Full walkthrough — Docker image, volume-backed SQLite, fly secrets for JWT_SECRET/TURN, and optional coturn — is in DEPLOY.md.

Public privacy docs

Ohiyo's privacy boundary is documented publicly:

License

AGPL-3.0. You're free to use, modify, self-host, and redistribute Ohiyo. The one obligation: if you run a modified version as a network service, you must offer your users its source. That's deliberate — it keeps every hosted fork of a free chat app free.


ohiyo.gg · github.com/New1Direction/ohiyo · Releases
Made with care (and one coral chinchilla named Kikka).

About

A free, self-hostable, end-to-end-encrypted Discord alternative — Signal-level privacy, Discord-level everything. Rust + React + Tauri.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors