Baalda is a desktop app plus a sync server. You can run both yourself, or run the app against the managed backend and skip the server entirely. The desktop app is identical either way. The only difference is the server URL you point it at.
Prerequisites
You only need these if you are building from source or running your own server. If you just want to use the app, download a build and skip to the last section.
- Node.js 22 or newer. Running
corepack enableactivates the pinned pnpm. - Rust and Cargo, from rustup.rs.
- Docker, which is what runs the Postgres database locally.
- On Linux only: Tauri's system dependencies plus
libdbus-1-dev, the build header for the Secret Service keychain backend that stores your session token.
1. Install dependencies
cd app
pnpm install2. Start the server
Copy the example environment file and adjust JWT_SECRET before you use this for anything real. db:up starts Postgres in Docker on host port 5439.
cd apps/server
cp .env.example .env
pnpm run db:up
pnpm run migrate
pnpm run devThat serves the HTTP API on port 3010, with the sync WebSocket at /sync on the same port.
3. Start the desktop app
pnpm run dev:desktopRun that from the app/ directory. It launches the Tauri app with Vite on port 1420. Open a folder of Markdown files, or create a new one, and start writing.
Would rather not run a server?
Everything above is self-hosted and free. If you would rather skip the backend operations, the managed backend at baalda.com handles multi-device sync, real-time team collaboration and hosted AI. In Settings, set the server URL to https://api.baalda.com for the managed service, or to your own instance.
The desktop app asks whether your notes live on the managed service or your own server before your first sign-in. You can also send your team a link to https://your-server/open/connect and let them click it.
This page is written from README.md in the repository. That document goes further, and it is the one that changes first.
