Baalda

Attachments and files

Which file types open, embed and search, the size ceilings, and the difference between embedded attachments and standalone file sync.


Files live in the vault folder alongside the notes, usually in attachments/. They sync as bytes, never through the CRDT, and are deduplicated by content hash so the same image embedded in ten notes is stored once.

What opens, embeds and is searched

Images, PDFs, Office documents, CSV, audio, video, code and text files, and archives. The text inside documents and spreadsheets is extracted, so search_notes and the app's search rank a spreadsheet's contents next to your notes, and each hit says whether it is a note or a file.

Two kinds of syncing

Embedded attachmentsStandalone files
What it meansA file a note embeds or links toAny other file sitting in the vault folder
On the free planSyncedKept on this computer
On TeamSyncedSynced across devices

On a plan without standalone file sync, Baalda says the file stays on this computer rather than retrying it forever.

Size ceilings

These are server settings. The defaults below are what a self-hosted server uses unless you change them.

SettingDefaultWhat it limits
MAX_BLOB_BYTES25 MBOne file, when attachment bytes live in Postgres. It is a memory bound: that provider buffers the whole value.
MAX_BLOB_BYTES_DIRECT500 MBOne file, when bytes go to S3-compatible storage and never enter the server process.
BLOB_MIME_ENFORCErejectWhether an unknown content type is refused with a 415 or stored with a warning.
Per-category capsvariesImages, PDFs, documents, audio, video, archives and text each have their own ceiling under the two limits above.

First launch

When a vault is first registered with a server, Baalda scans it and uploads what your plan allows. Files that never finished uploading are picked up again on later launches, including in very large vaults, and a file wrongly removed from the server while it is still on your computer is registered and uploaded again on its own.

This page is written from docs/RELEASE_NOTES.md, docs/DEPLOY.md and app/apps/server/src/blobs/formats.ts in the repository. Those documents go further, and they are the ones that change first.

Read it on GitHub