Your own workspace. Simple, secure, self-hosted.
Eigen is a self-hosted alternative to Google Workspace. It runs as a single server with integrated apps for email, file storage, documents, spreadsheets, presentations, calendar, contacts, and real-time chat — all sharing one API, one auth system, and one UI.
The name Eigen is Dutch and German for "own." You own your data, you own your infrastructure, you own your workspace.
For the backstory on how and why this project started, see Eigen: Building a Workspace.
Given the power large tech companies hold over our data, a self-hosted European alternative feels needed. Eigen aims to be that alternative: a workspace you can run on your own server, where every byte of data stays under your control.
The first goal is a self-hostable workspace for individuals, enthusiasts, and small organizations. During active development, expect rough edges — but the core is functional and improving fast. As the project matures and stabilizes, the aim is to make Eigen reliable enough for mid-to-large organizations as well.
Eigen is pre-1.0 and actively developed. The core works, but be deliberate about what you put on it:
- Breaking changes are likely between minor versions until 1.0; expect occasional manual migration.
- You own your data, including the backups. Use
scripts/backup.sh(or your own routine) and verify it restores. Eigen does not back up your data for you. - You own your server's security. Keep the host patched, lock down SSH, use strong passwords, and watch your logs. A self-hosted server is your responsibility end-to-end.
- No warranty — see LICENSE.txt. Eigen is built by a single developer in their spare time. It's provided as-is, in good faith, with no SLA.
If data loss in your workspace would be catastrophic, wait for 1.0. For personal use, hobbyists, and small teams comfortable with rough edges, the current build is functional and improving fast.
Eigen ships as a monorepo with a single API server and a set of tightly integrated frontend apps:
- Mail — Webmail client with full mailbox management. Email is stored in standard Maildir++ format, fully compatible with Dovecot. Connect any IMAP client (Thunderbird, Apple Mail, etc.) to access your mail alongside the web UI.
- Drive — File storage with folders, sharing, ACL, thumbnails, file previews, and pluggable storage backends (local filesystem, flat key-based, or S3-compatible). Soft delete with configurable trash retention. Supports inline editing of text, code, and Markdown files. Mount your drives as a network drive in Finder, Windows Explorer, or any WebDAV client.
- Docs — Collaborative document editor built on Tiptap and Yjs. Multiple users edit the same document in real time. Export to DOCX, PDF, and HTML. Embedded comment threads with @mentions.
- Sheets — Collaborative spreadsheets using a fully forked fortune-sheet engine with Yjs-based op-level sync. Concurrent edits on different cells merge cleanly.
- Slides — Collaborative presentations with a pixel-based canvas (1920×1080), resolution-independent rendering, drag-and-drop objects, background images, and a presentation mode.
- Stickies — Kanban boards with real-time collaboration via Yjs. Drag-and-drop cards and columns. Each card has its own embedded chat room for discussion.
- Calendar — Full calendar with recurring events (RFC 5545 RRULE), invitations with RSVP, shared calendars, and team calendars. Includes a CalDAV server — sync with Thunderbird, Apple Calendar, or DAVx5 using standard protocols.
- Contacts — Contact management with avatars.
- Chat — Real-time chat inspired by classic MUDs. Over 80 built-in slash commands including emotes, whispers, and @mentions. Chat rooms live inside Drive (inheriting its ACL), and can be embedded inside documents and kanban cards as comment threads.
- Space — Personal account settings, profile, and preferences.
- People — Organization and team administration. Manage members, roles, shared drives, team calendars, quotas, and server-wide settings.
Eigen doesn't lock you into its web interface. Standard protocols let you use your favorite native clients:
- IMAP — Via Dovecot. Eigen writes Maildir++, Dovecot serves it over IMAP. They coexist on the same filesystem.
- CalDAV — Built-in CalDAV server with discovery, sync-collection, and recurring event support. Tested with Thunderbird.
- WebDAV — Built-in WebDAV server (RFC 4918 Class 1+2). Mount your Drive as a network drive in Finder, Windows Explorer, Mountain Duck, rclone, or any standard WebDAV client.
- SMTP — Postfix handles inbound and outbound email, with DKIM signing and relay support.
git clone https://github.com/eigen-is/eigen.git
cd eigen
cp .env.development .env
bun install
bun run serveOpen http://localhost:3009/admin to run the first-time setup wizard. It creates your admin account and configures
storage.
For production, Eigen runs as four Docker containers: Caddy (reverse proxy with automatic HTTPS), Eigen API (Bun), Postfix (email), and Dovecot (IMAP). See the VPS Setup Guide for step-by-step instructions, or the Local Testing Guide to try the full stack on your machine.
bun run serve # All apps + API
bun serve:mail # Single app + API (works for any app name)
bun run lint # Lint + format check (Biome)
bun run lint:fix # Auto-fix
bun run typecheck # Type check all packages
bun run test # Run all tests
bun run check # lint + typecheck + testEach user gets their own directory on the server. SQLite databases (per user) store metadata and structured data. Files are stored separately. No shared database means no way to accidentally access someone else's data. Backups are trivial — just copy a user's directory.
data/home/{userId}/
├── mounts/default/ # Drive files + metadata.db
├── eigen.mail/ # Maildir + mail.db
├── eigen.contacts/ # contacts.db + avatars
├── eigen.calendar/ # calendar.db
└── eigen.notifications/ # notifications.db
Organizations and teams add shared resources on top: team drives, team calendars, and group-based ACL. Real-time collaboration runs through Yjs over WebSocket, while Server-Sent Events push live updates to all connected clients.
| Layer | Technology |
|---|---|
| Runtime | Bun |
| Backend | Elysia + Drizzle ORM (SQLite) |
| Frontend | React 19 + TypeScript + TanStack Router + TanStack Query |
| API | Eden Treaty (end-to-end type-safe) |
| Styling | Tailwind CSS 4 + shadcn/ui + Lucide |
| Auth | better-auth (email/password, 2FA, organizations, teams) |
| Real-time | Yjs (collaborative editing) + WebSocket + SSE |
| Tooling | Biome (lint + format) + Vite (build) |
apps/
api/ # Elysia backend (port 8000)
mail/ # Email client
drive/ # File storage
docs/ # Document editor
sheets/ # Spreadsheet editor
slides/ # Presentations
stickies/ # Kanban boards
calendar/ # Calendar
contacts/ # Contact management
chat/ # Real-time chat
space/ # Account settings
admin/ # Org/team admin
index/ # Landing page
setup/ # First-run wizard
packages/
lib/ # Shared types, hooks, API client, validation
ui/ # Shared components and layout system
fortune-sheet/ # Forked spreadsheet engine
data/ # Runtime storage (gitignored)
docs/ # Architecture documentation
Eigen is open source and contributions are welcome. The project is still in active early development — there's plenty to do and plenty of room to shape the direction.
See CONTRIBUTING.md for how to get involved — whether that's reporting bugs, submitting PRs, adopting a subsystem, or sponsoring the project. The full project context (for humans and AI agents alike) lives in AGENTS.md, and CODE-STANDARDS.md covers code style and architecture patterns.
Found a security issue? Please do not open a public issue — see SECURITY.md for how to report privately.
Architecture docs live in docs/:
| Area | Docs |
|---|---|
| Architecture | Storage, Database, SSE, ACL |
| Deployment | Deployment, Docker Setup, Testing |
| Frontend | Layout, Clipboard, Previews |
| Features | Calendar, Chat, Notifications, IMAP |
| Apps | Sheets, Slides, Stickies, Comments |
| Operations | Quota, Server Settings, Export, Organizations |
Questions, ideas, or want to contribute? Reach out at [email protected].