TL;DR

Threlmark treats disk files—specifically JSON—as the single source of truth, making data portable, inspectable, and safe even offline. This design simplifies sync, conflict resolution, and tooling, emphasizing local-first principles over traditional databases.

Imagine managing multiple projects with a system so simple it runs entirely on plain files on your disk. No servers, no cloud, just JSON files you can open with a text editor, and everything stays in sync. That’s the core idea behind Threlmark’s local-first architecture—using the disk itself as the contract.

This approach challenges the conventional wisdom that a database is needed for consistency and collaboration. Instead, Threlmark shows that the disk can be the authoritative source, making your data portable, inspectable, and resilient. Whether you’re offline, working across devices, or collaborating with external tools, this design keeps things straightforward and reliable.

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

plain JSON file editor

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

offline JSON data management tool

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

version control for JSON files

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 data sync software

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 disk files—especially JSON—as the primary contract, not just storage.
  • Atomic file operations are essential for safe, crash-proof updates.
  • Offline-first workflows thrive when data is portable and inspectable.
  • Conflict resolution simplifies when each item is a separate file with timestamps.
  • This approach favors transparency and simplicity over scalability for very large datasets.

How Threlmark’s Disk-First Setup Changes Everything

Threlmark’s core move is simple: your files on disk aren’t just storage—they’re the system’s contract. Think of each JSON file as a tiny, self-contained piece of your project data. Instead of a central database, every change happens directly on these files.

For example, when you update a task card, the app writes a fresh JSON file in its dedicated folder. This file is the official record—no intermediary database needed. This means you can open, edit, or sync these files with any tool, anywhere. It’s like having a living, breathing database that’s just plain text.

And because the entire system is built around this principle, the process is transparent. No magic—just files, simple and human-readable. This transparency unlocks portability, ease of backup, and compatibility with any tool that can read or write files.

How Threlmark’s Disk-First Setup Changes Everything
How Threlmark’s Disk-First Setup Changes Everything

Why Local-First Matters More Than Ever

Local-first isn’t just a buzzword; it’s a game-changer. It means you can keep working even when your internet drops out or your cloud service goes down. Threlmark’s design makes this real—your JSON files are always accessible, always up-to-date locally.

Picture a team working on a shared project during a flight. No internet? No problem. They edit their JSON files on laptops, and when they reconnect, everything syncs smoothly. This is exactly what local-first promises: seamless work, no interruptions, and a natural way to handle conflicts and updates.

According to recent research, offline-capable apps increase productivity and reduce frustration. Threlmark’s approach shows that you don’t need a complex sync engine—just reliable file operations and a simple conflict policy.

Inside the JSON Layout: The On-Disk Structure Revealed

Threlmark’s on-disk layout is like a well-organized toolbox. At its core, you find a manifest (`threlmark.json`) describing the entire setup, plus a graph of dependencies (`links.json`). Each project lives in its own folder, with files for metadata, WIP limits, and lane orderings.

The real magic happens with individual cards, stored as separate files in the `items/` directory. For example, a task card might be `items/task-123.json`. These files are tiny, focused, and easy to read or edit directly.

Additional folders hold suggestions, handoffs, reports, shared items, and archives. This structure makes everything transparent—every change is a commit-able file, and you can easily back up or migrate your entire setup by copying these files.

Inside the JSON Layout: The On-Disk Structure Revealed
Inside the JSON Layout: The On-Disk Structure Revealed

Making File-Based State Safe: The Atomic Write Trick

Using files for critical data sounds risky, right? Threlmark sidesteps this with atomic writes—a simple but powerful technique. Every update writes to a temp file, then renames it over the original. This guarantees no partial writes or corruption even if your system crashes mid-save.

For example, updating a card involves writing `items/task-123.json.tmp` first, then renaming it. This tiny step ensures your data remains consistent. It’s like replacing a glass window with a new one—no half-finished panes.

This pattern is the backbone of safe, reliable file operations, especially when there’s no central server to enforce consistency.

How Threlmark Handles Conflicts and Syncing

Conflicts happen when multiple devices edit the same file. Threlmark addresses this with a simple principle: the latest timestamp wins, but it also preserves unknown fields and merge history. That way, no data gets lost or overwritten unexpectedly.

Sync happens by copying files—no complex protocols needed. When two devices update a card simultaneously, the system compares timestamps and merges changes, keeping the full history intact. You can learn more about local-first architectures.

For example, if your laptop and tablet both update a task, the system will automatically choose the latest change based on `updatedAt`, and keep any extra fields your tools added. This approach keeps everything consistent without a central authority.

How Threlmark Handles Conflicts and Syncing
How Threlmark Handles Conflicts and Syncing

Performance, Safety, and the Tradeoffs of File Storage

Storing everything in files isn’t just simple; it’s lightning-fast for local reads and writes. No network latency, no waiting for server responses. But, there are tradeoffs. Large projects can lead to many small files, which may impact startup times or file system performance.

Safety is built-in—atomic writes, versioning, and a straightforward conflict policy mean your data stays safe during crashes. For more insights, see how local-first systems ensure safety. Still, it requires disciplined backups and clear conflict handling, especially for teams.

Compared to a traditional database like SQLite, Threlmark’s approach trades some performance and scalability for transparency, simplicity, and offline resilience. It’s perfect for personal workflows or small teams but can stretch with very large datasets.

Real-World Use Cases: When This Architecture Shines

Threlmark’s design excels in scenarios where flexibility, portability, and offline access are key. Think solo developers managing multiple projects across devices, or teams collaborating in patchy network environments. For example, a remote team working on a shared design system can edit JSON files locally, then sync once online.

It’s also great for tool integration—external apps or AI agents can read and write files directly, making automation seamless. If you want a lightweight, transparent, multi-tool workflow, this setup is a perfect fit.

Real-World Use Cases: When This Architecture Shines
Real-World Use Cases: When This Architecture Shines

Limitations and Things to Watch Out For

This architecture isn’t perfect. It relies heavily on disciplined conflict management and backups. Large projects with thousands of files can slow down file system operations. And, if multiple devices edit without proper sync, conflicts may get complicated.

Another challenge is ensuring atomicity across networked file systems—local disks are safe, but cloud sync tools might introduce issues. Being aware of these limits helps you design better workflows.

Frequently Asked Questions

What does ‘disk is the contract’ actually mean?

It means the JSON files on disk are the definitive source of truth. All tools read and write these files directly, so the system’s state is transparent, portable, and safe from server outages.

Why use JSON files instead of a database?

JSON files are human-readable, easy to inspect, and portable. They eliminate lock-in, making backups and migrations straightforward, especially for offline or small-scale projects.

How does Threlmark sync data across devices?

It copies the JSON files directly, relying on file timestamps and conflict policies. No complicated protocols—just straightforward file sync, making offline work and manual sync simple.

What happens if two devices edit the same file simultaneously?

The system compares timestamps and merges changes, preserving extra fields and history. This keeps data consistent without requiring locks or central servers.

Is this approach suitable for team collaboration?

Yes, especially for small teams or workflows demanding offline access. But it requires discipline in conflict management and regular backups to avoid data loss.

Conclusion

Threlmark’s disk-as-contract architecture flips the script on traditional data storage. It proves that a simple, file-based system can be powerful, resilient, and perfectly suited for offline workflows. If you crave transparency, portability, and control, this model offers a compelling path forward.

Next time you pick a tool or design a system, ask yourself—could the disk itself be the contract? Sometimes, the simplest answer is the most elegant.

You May Also Like

Remove–AI–Watermarks – CLI and library for removing AI watermarks from images

A new command-line tool and library now enable removal of visible and invisible AI watermarks from images across multiple platforms and models.

What Network Sharing Really Adds to Scanner Productivity

The true value of network sharing in scanners lies in its ability to enhance productivity and collaboration—discover how it can transform your workflow today.

Rivian spinoff Mind Robotics raises another $400M

Rivian spinoff Mind Robotics raises an additional $400 million, bringing total funding to over $1 billion, to develop industrial automation robots.

Playing Atari ST Music on the Amiga with Zero CPU

A new technique enables playing Atari ST music on the Amiga without using CPU resources, by leveraging the Amiga’s PAULA chip to emulate YM2149 sound effects.