Local-first trust
Local-first means the workspace is a folder you own, and it stays that way.
Most apps keep your work in a format only they can read, in a place only they control. Undra goes the other way: your workspace is an ordinary folder of ordinary files. The app makes that folder more capable without making it mysterious, and without trapping anything inside.
What that gets you
This is not really about storage, it is about confidence:
- you can back up the folder, sync it, or move it to a new machine
- you can open and edit the files in any other tool
- you can recover from a mistake, because the files are right there
- you can keep using the editors and scripts you already rely on
- you can see what AI or automation changed, because the change lands in a file you can read
Plain files all the way down
- your workspace lives on disk, as a folder you chose
- notes are Markdown files, with natural filenames
- folders are real folders, not a database with folders painted on
- the app’s search and graph indexes are caches: if one is ever lost, it can be rebuilt from your files, and none of your work is at stake
- optional local indexes (for example
.undra/embeddings.sqlitefor semantic search) are rebuildable caches too, not your source of truth
Two honest edges
App-level state that is not your work - preferences, provider sign-ins, window layout, and the safety backups taken before AI edits real folders - lives in Undra’s own app data, not in the workspace. A workspace backup captures your work; it does not capture your app setup. And images embedded in notes are stored inside the workspace (under .undra/data/media/) and travel with the folder, though other Markdown editors may not preview them from notes in subfolders.
More than one workspace
A workspace is one folder, and you can have more than one. Undra Home is the launcher for registering, creating, linking, and switching between workspace folders. Inside a workspace, the sidebar switcher moves you to another registered folder. Each is an independent folder you own, so the same local-first guarantees apply to every workspace, and removing one from the list never touches the files on disk.
See what changed
When something edits your workspace, it should be clear what changed and why. AI and automation are meant to be inspectable: every file change is listed in chat as it lands, and a run’s file changes can be undone from the same place. Portal deletions are no exception: the file is moved into Undra’s own backup storage before it leaves your folder, so the undo can put it back. One deliberate exception, stated plainly: terminal commands an AI runs (installs, builds, scripts) are commands, not tracked file edits, so their effects sit outside the undo. And because every note is a plain file, an earlier version is always recoverable through whatever backup, sync, or version control you already use.
What to try
- Reveal a note on disk and look at the actual file.
- Drop an existing Markdown file into the workspace folder and open it straight away.
- Restart the app and reopen the same workspace from its folder.
- Make an edit, then check that you could find and undo it outside the app if you had to.
The one rule
If something changes your workspace, you should be able to tell what it changed and why. Everything else in local-first follows from that.
Where to go next
- Notes: what one of those plain Markdown files looks like on disk.
- Bringing Markdown into Undra: adopt Undra without a migration.
- Folder Portals: point Undra at a real folder and let AI edit it with backups and one-click undo.
- Mira: the assistant who edits with inspectable, undoable changes.