The Most Overkill Messaging App in the World.
Website · Alpha · Docs · Blog · Twitter
Mikoto is an messaging platform designed for building online communities. It uses a thread-based structure for text messaging, voice/video chat, and real-time collaborative wiki editing.
Note: Mikoto is still in early development. Some of these features are not fully implemented.
- ✨ Open Source (with proprietary extensions for enterprise support)
- ⚡️ Superuser friendly features, like tab view, zen mode and, keyboard shortcuts and more
- 📡 Voice, video, and screen sharing
- 📝 Real-time collaborative wiki channels
- 🧵 Next-generation thread management
- 🏡 Threaded DMs and group DMs
- 🎨 Customizable themes and appearances
and upcoming features:
- 🪐 DID-based usernames
- 🔒 E2E encrypted DMs and Group DMs
- 🔍 Semantic search across all channels
- 🔌 Pluggable architecture for custom extensions
- 🛒 A marketplace for extensions and integrations
- 🌎 Built-in community finder
- 🥸 A system to handle multiple personas and identities
Prerequisites:
- Docker
- Rust 1.81+
- Node.js 22+
- sqlx CLI (
cargo install sqlx-cli --no-default-features --features rustls,postgres
)
# use corepack
corepack enable
# install dependencies
pnpm install
cargo check
# Copy .env.example to .env and set the variables
cp ./apps/superego/.env.example ./apps/superego/.env
# migrate database (run in superego directory)
sqlx database create
sqlx migrate run
# start services (PostgreSQL, Redis, MinIO, etc.)
docker-compose up
Mikoto uses a turborepo-based monorepo.
Use Docker Compose to run the necessary services.
To develop apps and packages, run the following command:
pnpm start
To browse/edit the Database run the following command:
Check Dockerfiles and Github Actions for more details, until more documentation is added.
cd apps/server
prisma studio
To build all apps and packages, run the following command:
yarn build
All Mikoto services use ports in the 351X
or 351XX
range to avoid conflicts with other common services:
Service | Port | Description |
---|---|---|
Server | 3510 | API server |
Auth | 3511 | Authentication service |
Collab | 3512 | Collaboration service |
MediaServer | 3513 | Media handling service |
Superego | 3514 | Core server |
Client | 3519 | Web client (served via nginx) |
Service | Ports | Description |
---|---|---|
PostgreSQL | 35101 | Database |
Redis | 35102 | Cache & pub/sub |
MinIO (S3) | 35103, 35104 | Object storage |
LiveKit | 35105, 35106, 35107 | Real-time audio/video |
MailHog | 35108, 35109 | Development mail server |
Meilisearch | 35110 | Search engine |
Package | Description | Stack |
---|---|---|
apps/superego |
Core server for Mikoto | Rust + Axum + SQLX |
apps/content-proxy |
S3 Proxy | Rust |
apps/client |
The web client for Mikoto | React |
apps/mobile |
Mobile client for Mikoto | React Native |
apps/desktop |
Desktop client for Mikoto | Electron |
packages/mikoto.js |
Mikoto API for JS | TypeScript + Valtio |
packages/permcheck |
Permisson Calculator | TypeScript |
While we're still an early-stage project and the licensing may change in the future, Mikoto is currently dual licensed under AGPL core and a proprietary license. Please email cactus (at) mikoto.io if you are interested in enterprise uses for Mikoto.