Inspiration

Made of love/hate relationships with Obsidian and Notion.

  • File-first is much more reliable, faster and AI-friendly than cloud/MCP, but Obsidian editor, databases and customizability is not the way I like
  • Notion structure and easy web access/sharing/collaboration are great, but the speed and integrations are not - cloud API and MCP are not capable nor fast
  • Rumi.md is for ruminating, saw it as one of Claude's loading states and it baked to memory
  • I feel like md/file-based workspace is the way to go with AI for memory, organization and asynchronous work. Also everyone like to have their workspace highly customizable, swappable client provides not only appearence but functionality customization

What it does

  • Server initiates the folder as workspace, builds indexes/cache, and exposes it as any other app via localhost + port
  • Server responsibility is watching the folder, changing the files from client requests and indexing for cache and DB
  • Client is responsible to reactively show changes of outside-app edits, render md<->html and send changes to server. Biggest part
  • Can absolutely run offline, just run on localhost and access via browser
  • Uses a GitHub flavored markdown to support highlights

How we built it

  • It started as Electron app, but server+client self-hosted idea is much more reliable and scalable
  • Built fully with Claude (Electron), then Codex for self-host pivot
  • I'm building Rumi with Rumi's stucture with agents.md instructions to orginize the process: for each Codex task LLM does the task/PRD to compare against and also works as memory. Also decision, todos, etc.

Challenges we ran into

  • Biggest one being the revisions/backups and sync across devices. Basically it's the reason of pivoting - instead app hosts on server (either local or remote) and can be easily accessed. Backups are file-based instead of Git-based, which is also much easies
  • Block editor: there's none Notion-like editors that would satisfy my needs. TipTap is close but not quite, so I proceed with ProseMirror with block editor on top of it
  • Building new features often break the old ones, so I integrated tests to the task pipeline - investigate, interview, implement, write test, run tests, commit

Accomplishments that we're proud of

  • The pivot from Electron to self-host server + client is the biggest one. I think it's the ultimate architecture for the goal
  • Custom block editor is what I missed the most from Notion in Obsidian, but also it has coder-familiar shortcuts for content editing
  • Custom .db.md and .index.md extensions to make app more structured preserving file-first principe

What we learned

  • Git sync is a pain
  • Serve >> sync: why to sync files across devices, better to serve a single canonical version

What's next for rumi.md

  • DBs: views, props, formulas, lookup (auto-link on conditions)
  • Custom client support
  • Global tags across workspace
  • oAuth: select an auth provider e.g. Google, Github etc. instead of login-pass
  • Hosting: feature to host the Rumi for the casual users

Built With

Share this project:

Updates