TL;DR

Threlmark’s core idea is that the disk is the source of truth, meaning all project data lives in plain JSON files on your disk. This design makes the system fast, portable, and resilient, allowing offline work and easy integration with external tools, all without a database.

Imagine building a project management tool that never depends on a server, never locks you into a proprietary database, and keeps working even if your internet drops out. Sounds like a dream, right? But that’s exactly what Threlmark does. Its secret? It treats the disk as the ultimate contract, making your project data a living, breathing part of your local environment.

In this article, we’ll explore how Threlmark’s architecture flips the traditional approach on its head. Instead of a central server or cloud, it relies on plain JSON files stored directly on your disk. This simple decision unlocks speed, portability, and resilience—plus, it makes external tools and AI agents part of the workflow. Ready to see how a disk can be the backbone of a modern, local-first system? Let’s dive in.

Disk is the contract: inside Threlmark’s architecture — ThorstenMeyerAI.com
ThorstenMeyerAI.com
Threlmark · Technical Deep-Dive
Threlmark · architecture

Disk is the contract: inside a local-first roadmap hub

A Next.js app on top of plain JSON files — no database, no cloud, no accounts. The key decision: the on-disk layout IS the API. Everything else cascades from taking that seriously.

Next.js · TypeScript · JSON-on-disk · MIT · part 2 of the Threlmark series
01The core decision

There is no server-of-record — the files are the record

The UI and any external tool reach the same files through the same discipline. The data root defaults to ~/.threlmark — home-based, because it’s a shared hub every one of your apps points at.

~/.threlmark/ ├─ threlmark.json # manifest ├─ links.json # dependency graph ├─ projects// │ ├─ project.json # meta + wipLimits │ ├─ board.json # lane ordering │ ├─ items/.json # ONE card per file ← source of truth │ ├─ suggestions/ # the Inbox (drop-zone) │ ├─ handoffs/ # recorded agent handoffs │ ├─ reports/ # agent report drop-zone │ └─ ROADMAP.md # human-readable mirror ├─ shared/items/ # cards many projects ref └─ archive/ # archived, still readable

Inspectable

Every artifact is a file you can cat, diff, grep, commit.

Portable · no lock-in

Back up with cp, sync with Dropbox / git, migrate trivially.

Interoperable

Any tool in any language joins by reading / writing files.

Restartable

No in-memory state to lose — stateless over the files.

02Making files safe
Amazon

portable external SSD drive

As an affiliate, we earn on qualifying purchases.

As an affiliate, we earn on qualifying purchases.

Two disciplined patterns instead of a database

“Just use files” is easy to get wrong. These two patterns — ported from a battle-tested sibling app — are what make file-based state sound rather than reckless.

Pattern 1

Atomic writes

Write to a temp file in the same dir, then rename() over the target. Rename is atomic on one filesystem — a crash mid-write leaves the complete old file or the complete new one, never a half.

write .tmp-pid-rand fsync rename() over target
Pattern 2 · one file per item

The board heals itself

A single roadmap.json array races when two tools write at once. One file per card makes writes collision-free. Lane order lives in board.json and reconciles on read.

The payoff: an external tool never touches board.json. It writes an item file — the board fixes itself on Threlmark’s next read. Unknown keys are preserved, so the contract is forward-compatible.
03Derived, never stored
Amazon

JSON file editor for Windows

As an affiliate, we earn on qualifying purchases.

As an affiliate, we earn on qualifying purchases.

The numbers can’t drift from the files

Anything computable from item state is computed — so the displayed numbers can never disagree with the underlying JSON. Priority is the clearest example: it’s calculated on read, never persisted.

priority — computed on read

Impact weighted heaviest; effort the only axis that subtracts. Reused verbatim from the original tool, so imported cards rank identically.

priority = max(0, round(impact·3 + evidence·2 + fit·2effort·1.5))
a 5 / 5 / 5 / 4 card 29
work-item age
now − lane-entry time. Past threshold (dev 7d, ranked 21d, idea 60d) → stale.
cycle time
first DevelopmentDone. Derived from append-only transitions[].
throughput
items reaching Done per ISO week, 8-week window.
WIP
count per lane; over the cap shows 3 / 2 in red.
04The closed agent loop · press play
Amazon

offline project management software

As an affiliate, we earn on qualifying purchases.

As an affiliate, we earn on qualifying purchases.

A handoff is a first-class flow event

The genuinely 2026-shaped part: most building is done by AI agents, so Threlmark closes the loop. Watch a card go from ranked to Done without anyone dragging it.

Handoff → report → self-move

The brief carries a reporting protocol. The agent reports through REST or the filesystem — and a done report moves the card itself.

Ranked
Add price-drop alertsscore 31 · ready
Development
Handed off 🤖
Done
▶ preferred — REST
POST /api/projects/:id/
items/:itemId/report

Direct call. Applied immediately.

▶ fallback — filesystem
drop reports/.json
→ ingested on read

Robust even if the server’s down at finish time.

🤖 claude done: price-drop alerts shipped · typecheck + lint + build passed — card moved to Done
05Portfolio score & deployment
Amazon

local-first file synchronization tool

As an affiliate, we earn on qualifying purchases.

As an affiliate, we earn on qualifying purchases.

A small formula, and an honest hosting caveat

Because items are globally addressable (/), the Portfolio ranks everything together by a status-weighted score — finishing beats starting, blockers get a boost.

Portfolio ranking — status-weighted

In-flight work floats to the top; bottlenecks cost the most, so blockers get nudged up.

score = priority · statusWeight (+ 0.1 · blockedCount · priority)
1.3
development
1.0
ranked
0.85
idea
0.15
done
Path 1

Static read-only demo

Seeded data, writes to localStorage. Try-before-you-clone.

Path 2

Personal Node instance

Password-gated, persistent backed-up THRELMARK_DATA_DIR.

Path 3

Multi-tenant SaaS

Add accounts + per-tenant isolation. A separate build.

The elegant part: the store interface src/lib/*/store.ts is the natural seam — the same boundary that keeps the local tool simple is the one you’d extend for multi-tenancy. The architecture doesn’t fight that future; it just doesn’t pay for it until you need it.
ThorstenMeyerAI.com
Threlmark · open source (MIT) · github.com/MeyerThorsten/threlmark · part 2 of a series · file layout, formula, weights & agent-loop channels are Threlmark’s actual mechanics.

Key Takeaways

  • Treat your disk as the source of truth by storing each project component in plain JSON files.
  • Atomic file operations prevent corruption and keep data consistent during crashes or interruptions.
  • One file per item design reduces race conditions and makes external editing safe and straightforward.
  • External tools and AI agents can participate naturally by reading and writing files directly, no APIs needed.
  • Local-first architecture offers speed, resilience, and offline capability that traditional cloud systems struggle to match.

Why ‘Disk Is the Contract’ Changes Everything

The core idea is straightforward: your project data lives on your disk, not in a remote database. This means every change is just a file update. No middleman, no server dependency. This approach solves common problems like offline work, data portability, and complex sync conflicts.

Take a scenario: you’re working on a team, and your laptop suddenly loses internet. Traditional cloud apps can grind to a halt or lose data. Threlmark keeps ticking because all your project info is right there on your local disk. You can continue editing, adding, or deleting—then sync later when the network returns.

This method also makes your data easily portable. If you want to back it up or move to a new machine, just copy the files. No complicated migrations, no vendor lock-in. It’s as simple as copying a folder, which makes the whole system more resilient and flexible.

Why 'Disk Is the Contract' Changes Everything
Why ‘Disk Is the Contract’ Changes Everything

How Threlmark Stores Data — Concrete and Clear

Threlmark uses plain JSON files stored in a directory structure that acts as the database. Every project, card, and label lives in its own file. For example, each roadmap card is one `.json` file inside an `items/` folder.

Here’s a quick comparison of traditional databases versus Threlmark’s approach:

Feature Traditional Database Threlmark’s JSON Files
Data Storage SQL/NoSQL engine Plain JSON files
Speed Depends on network and server Immediate local disk access
Portability Requires export/import tools Copy files directly
Sync & Collaboration Complex, often with conflict resolution Simple file merges, conflict awareness built-in

This setup makes the data transparent and accessible. You can `cat` a file, `diff` two versions, or even manually tweak a card without breaking the system. It’s the ultimate in simplicity and control.

Atomic File Operations Keep Your Data Safe and Consistent

Threlmark avoids corruption through atomic writes: it writes to a temporary file and then renames it over the original. This simple trick guarantees that, even if your computer crashes mid-write, your data stays consistent. Learn more about atomic file operations.

Imagine editing a card. Threlmark reads the current JSON file, merges your changes, then atomically replaces the old file. This process makes sure no partial updates slip through, no matter what.

Here’s a quick code snippet to illustrate:

async function writeFileAtomic(path, contents) {
  const tmp = `${path}.tmp-${process.pid}`;
  await writeFile(tmp, contents, 'utf8');
  await rename(tmp, path);
}

This pattern is the backbone of safe, file-based state management. It’s simple, effective, and proven in many systems where data integrity is critical.

Atomic File Operations Keep Your Data Safe and Consistent
Atomic File Operations Keep Your Data Safe and Consistent

One File Per Item — How It Solves Concurrency and Sync Woes

Instead of one giant JSON list for a project, Threlmark uses one file per card. This means external tools can modify individual cards without risking race conditions or overwrites. Discover how this approach solves concurrency issues.

Imagine two developers working on different cards simultaneously. With the single-file approach, each update is atomic and isolated, so they won’t clobber each other.

Plus, the system reads the actual files on each access, reconciling the lane order against the existing items. This self-healing ensures the in-memory state always reflects the true disk state, reducing sync headaches.

For example, if a card gets deleted, its file disappears, and the lane order readjusts automatically.

Making External Tools and AI Agents Part of the Workflow

Because data lives as files, external tools like IDE plugins or AI agents can participate without special permissions. They just read and write files, just like your local editor. See how this integrates with smart home tech.

Threlmark sets up drop zones for suggestions, handoffs, and reports, which external AI systems can monitor and update. For instance, an AI can suggest a new task, write it into `suggestions/`, and Threlmark will incorporate it—no API needed.

This open approach means you can integrate anything from a simple script to a powerful AI assistant, all working directly on the disk.

Imagine an AI that scans your project, picks out bottlenecks, and moves cards to “Done” based on your rules. That’s the power of a disk-based, file-first architecture.

Making External Tools and AI Agents Part of the Workflow
Making External Tools and AI Agents Part of the Workflow

Speed and Resilience — Why Local-First Wins

Threlmark feels incredibly fast because every interaction is local. No waiting for server responses, no loading screens—just instant updates from your disk. Explore related industry insights.

Plus, it stays operational during network outages. If your Wi-Fi drops, you can still add cards, move lanes, or tweak details. Once online, syncs happen seamlessly.

This resilience is a game-changer for teams that work in environments with flaky internet or need to keep working during outages. It reduces frustration and increases productivity.

For example, during a recent conference, a team used Threlmark on their laptops without internet. They kept moving forward, then synced later, with no data loss or conflicts.

What You Should Do Next: Building Your Own Disk-First App

If you’re inspired by Threlmark’s design, here are steps to start your own disk-based project:

  1. Design a clear directory structure. Decide where each piece of data lives.
  2. Use atomic write patterns to keep data safe.
  3. Store each item as a separate JSON file for concurrency.
  4. Implement self-healing reads that reconcile disk state with in-memory views.
  5. Build in support for external tools and AI integrations by watching specific folders.

And remember: treat your disk as the contract. That simple principle unlocks a world of speed, safety, and flexibility.

Frequently Asked Questions

What problem does ‘disk is the contract’ solve?

It solves issues like offline work, data portability, and conflict management by making project data directly accessible and modifiable on your local disk without relying on servers or cloud services.

How is this different from traditional client-server architecture?

Instead of a central server holding all data, each device reads and writes directly to local files. Syncing happens later, making the system more resilient and faster for local interactions.

Why use JSON on disk instead of a database engine?

JSON files are simple, transparent, and easy to manipulate. They eliminate the complexity of databases while providing full control, versioning, and compatibility with external tools.

How does syncing work across devices?

Syncing involves copying file changes between devices, often with conflict resolution. Since each piece is a file, merging changes becomes straightforward and conflict-aware.

What happens when two devices edit the same data?

Because each item is a separate file, conflicts are localized. Using a versioning or merge strategy, you can resolve conflicts manually or automatically, avoiding data corruption.

Conclusion

Threlmark’s approach shows that simplicity and discipline in data storage can lead to a faster, safer, and more open system. When the disk becomes your contract, you gain control, resilience, and flexibility that modern cloud apps often sacrifice.

Imagine a future where your project data is always accessible, editable, and portable—regardless of network conditions. That’s the promise of a disk-first, file-based architecture. It’s not just a tech trick; it’s a mindset shift. So, what’s stopping you from trying it out?

What You Should Do Next: Building Your Own Disk-First App
What You Should Do Next: Building Your Own Disk-First App

You May Also Like

Dolby Vision vs HDR10+ vs HDR10: The HDR Format That Wins (Most Often)

I want to help you decide which HDR format delivers the best visual experience, but understanding their differences is key to choosing the right one.

NPUs Explained: The Chip Inside New Laptops Everyone Is Talking About

I’m about to reveal how NPUs are transforming laptops, making AI smarter and more efficient—discover what sets these chips apart.

Brain‑Inspired Neuromorphic Chips

Lighter, faster, and more efficient: brain-inspired neuromorphic chips revolutionize computing by mimicking neural processes—discover how they will shape the future.

5GbE and 10GbE at Home: When Faster Ethernet Finally Matters

Having faster Ethernet like 5GbE and 10GbE at home can revolutionize your connectivity—discover when it’s truly worth upgrading.