Your notes. Your data. Every app.

EweserDB is a local-first, user-owned database. Write in one app, read in another. Take your PKM anywhere — no lock-in, no vendor dependency, works offline.

Try Ewe Note → For Developers

Your data should work for you

The current paradigm: you ask the app for your data. The new paradigm: the app asks you.

Old world

  • You ask Notion: "Can I have my notes?"
  • Switching apps means starting over
  • Offline? Hope the app cached something
  • Your AI assistant can't see your PKM

EweserDB world

  • Notion asks you: "Can I see your notes?"
  • All your data follows you to any app
  • Offline first — always available, always yours
  • AI agents access your data via MCP — you stay in control

"It's like decentralized Firebase — but users own the data, not the platform."

Built for how you actually work

Local-first. Offline-ready. Interoperable by design.

📶

Works Offline, Always

Your data lives in your browser first. Notes sync when you're back online — automatically, silently.

🔀

Use Multiple Apps, Share One Dataset

Take notes in Ewe Note. Review flashcards in a flashcard app. Both work with the same data — no copy-paste, no export.

Real-Time Collaboration

Share a room with a teammate. Edit together live. Conflict-free CRDT merging — no one's work gets lost.

🚀

Skip the Onboarding

Try a new PKM app with all your existing data already loaded. No friction — just switch and go.

🏠

Self-Host or Use Our Server

One-click deploy on Railway (~$5/mo). Or run it on your own VPS. You own the server, you own the data.

🤖

AI-Powered — On Your Terms

Give Claude, Copilot, or any MCP-compatible AI agent access to your notes. You control what the agent can see and write.

For Developers

Build interoperable apps in minutes

Add @eweser/db to your app. Users bring their own data. No backend required.

import { Database } from '@eweser/db';

const db = new Database({
  initialRooms: [{ collectionKey: 'notes', name: 'My Notes' }]
});

const room = db.getRoom('notes');
const Notes = room.getDocuments();

// Creates a note — syncs to all other apps
// the user has authorized automatically
Notes.new({ text: 'Hello from any app' });
$ npm install @eweser/db yjs

That's it. Your app now has a user-owned, offline-first, real-time collaborative database. No Supabase account. No Firebase billing surprises. The user's homeserver handles everything.

TypeScript-native

Strongly-typed document schemas. Notes, flashcards, profiles — with _ref cross-links between collections.

Yjs CRDT under the hood

Conflict-free, offline-tolerant sync. IndexedDB for local persistence. Hocuspocus WebSocket for real-time.

MCP server built-in

Ship an AI-native app instantly. Users' AI agents (Claude Desktop, VS Code Copilot) connect via @eweser/mcp — zero extra backend.

No backend required

Point your app at eweser.com or any self-hosted homeserver. Auth, sync, and access control all handled.

Build on shared schemas

Interoperate with other EweserDB apps out of the box. Or extend privately with your own document types.

Open source, MIT

Full monorepo on GitHub. Self-host the whole stack. No dependency on our servers — ever.

"Apps must compete on experience, not lock-in. Third parties can build new features on your users' data without needing permission from the original developer."

— EweserDB philosophy

Get started

Your data, your server — or ours.

For users

Try Ewe Note free

No sign-up friction. Works on our hosted server. Your data stays local in your browser first.

Open Ewe Note →

For developers

Deploy your own homeserver

One-click Railway deploy (~$5–15/mo) or run on any $6/mo VPS with a single shell command.