TL;DR

Threlmark treats disk storage as the main contract, making data open, portable, and reliable without relying on a cloud or server. This design allows offline use, easy sync, and external tool integration, improving both speed and control.

Imagine managing your entire project roadmap directly from your disk—no cloud, no server, no lock-in. That’s the bold promise of Threlmark’s local-first architecture. It’s a system that treats your disk as the ultimate source of truth, making everything faster, more resilient, and more portable. Learn more about local-first architecture.

If you’ve ever wrestled with cloud dependencies, slow syncs, or locked-in tools, this approach might just change how you see project management software. Let’s peel back the curtain and see how a simple on-disk layout can support complex workflows, external tools, and even autonomous AI agents.

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

external disk storage for project management

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 project management software

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

JSON file-based project management tools

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 project management app

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 layout as the API—use one JSON file per item for safe, collision-free updates.
  • Atomic writes prevent data corruption, making file-based systems as reliable as databases.
  • External tools and AI agents can read/write files directly, fostering automation and collaboration.
  • The self-healing board ensures your project always reflects the actual state, even with manual edits.
  • Local-first design boosts speed, offline resilience, and control, reducing reliance on cloud infrastructure.

How Threlmark’s Disk Layout Becomes the API for Everything

Threlmark’s genius lies in making the disk layout the API. Instead of a database, every single project element is a separate JSON file—think of each card, lane, and dependency as a tiny, self-contained artifact. When you open the app, it reads these files directly, no middleman needed.

For example, each roadmap card lives in items/ as a JSON file, which can be edited by any tool or script. You can see how this approach is discussed in this article on local-first architecture. Changes are atomic—written to a temporary file then renamed—so no race conditions or corrupt data. This setup means your project data is always accessible, editable, and ready for external tools like AI agents or version control.

Why does this matter? Because it fundamentally shifts the way we think about data management. Instead of abstracting data behind APIs or databases, you’re working directly with the source—your files. This transparency simplifies debugging, enhances control, and reduces dependency on proprietary systems. However, it also means you need to manage synchronization carefully—if multiple tools edit files simultaneously, conflicts can arise. The tradeoff here is between simplicity and the need for robust conflict resolution strategies. Still, for many, the clarity and control outweigh the complexity.

How Threlmark’s Disk Layout Becomes the API for Everything
How Threlmark’s Disk Layout Becomes the API for Everything

Why This Matters: Speed, Resilience, and Portability

When your data lives directly on disk, everything speeds up. No waiting for network responses or cloud syncs. You can work offline, make quick edits, and trust that your files are the real record. If your laptop crashes, your data stays safe in plain files—just like a well-organized folder of notes.

Beyond speed, this architecture offers remarkable resilience. Because your data isn’t dependent on an active connection or a remote server, your work can continue uninterrupted even during network outages or hardware failures. Explore the latest in tech trends. This resilience is especially critical for teams in remote locations or those handling sensitive data where control over infrastructure is essential.

Portability is another key benefit. You can copy your entire project folder to a new device, share it via physical media, or integrate it with other systems—without vendor lock-in. This level of control means you’re not tied to a specific cloud provider or proprietary platform, giving you the freedom to adapt as your needs evolve. The tradeoff? You must handle synchronization and conflict resolution yourself, which requires some discipline but pays off in flexibility and security.

The Atomic File Pattern Keeps Your Data Safe

Imagine writing a note in a notebook. You don’t tear out pages mid-write, right? Threlmark does the same with files. It writes updates to a temporary file then renames it—an atomic move—so the data never ends up half-written or corrupted.

Why is this pattern so important? Because it ensures data consistency and durability even during unexpected failures. If your system crashes during a write, the original file remains intact, preventing corruption or partial updates that could break your project state. This approach simplifies recovery, reduces the risk of data loss, and maintains integrity without complex locking mechanisms. The tradeoff is that it requires careful implementation of file operations, but the payoff is a resilient system that can handle crashes gracefully. This pattern effectively turns your filesystem into a lightweight, reliable database—without the overhead or complexity of traditional database systems. For more insights, visit Artificial Intelligence Max.

The Atomic File Pattern Keeps Your Data Safe
The Atomic File Pattern Keeps Your Data Safe

One File Per Card: Avoid Race Conditions and Clobbering

Storing each task or card in its own JSON file solves a big problem: race conditions. Instead of editing a giant list, updates target only one file. That means you can run external scripts, AI agents, or even manual edits without worrying about overwriting each other.

Why does this matter? Because it enables true concurrency. Multiple tools can modify different cards simultaneously without conflicts, provided they follow simple rules for file access. This setup reduces bottlenecks and allows for more flexible automation—think of AI agents updating cards, external editors refining details, or team members collaborating offline. The main tradeoff is managing numerous small files, which might seem cumbersome at first, but the benefits in concurrency, clarity, and external tool compatibility are substantial. It’s a design choice that favors modularity and robustness over monolithic data structures.

How the Board Self-Heals and Keeps Its Order

The lane order in Threlmark isn’t stored in a single big list. Instead, it’s a separate file, board.json, that’s read and reconciled on every access. If a card disappears or gets renamed, the board automatically updates itself.

Why is this approach so powerful? Because it makes the system inherently self-healing. External modifications or manual edits can introduce inconsistencies—like missing cards or incorrect order—but the system detects these discrepancies each time it reads the data. It then applies reconciliation rules, such as reordering based on the current state, to restore consistency. This means your project view remains accurate and reflects the true state of your data without manual cleanup. The tradeoff involves additional logic during reads, but it results in a more resilient and flexible system that can adapt to changes dynamically—crucial for complex workflows or collaborative environments where data might be manipulated outside the app. Learn more about resilient data systems at Deep Intellica.

How the Board Self-Heals and Keeps Its Order
How the Board Self-Heals and Keeps Its Order

External Tools and AI Agents Play Nice with Files

Threlmark’s file-based system is open by design. External tools, from simple scripts to AI agents, can read and write files directly. Want to add suggestions, report progress, or move a card to Done? Just update the relevant JSON file. See how this article explains the integration possibilities.

What does this openness mean in practice? It fosters a vibrant ecosystem of automation and collaboration. Developers can build custom integrations, AI can analyze and modify project data, and users can script routine updates—all without needing a proprietary API or server. This openness also simplifies debugging, as you can directly inspect and modify files to troubleshoot issues or experiment with new workflows. The tradeoff? It requires discipline and good practices to avoid conflicts or inconsistent states, but the flexibility and extensibility it offers are unmatched in traditional centralized systems. Ultimately, it turns your project system into a community-driven, adaptable platform where external tools can seamlessly participate.

Sync and Conflict Resolution Without a Server

Syncing in Threlmark isn’t about push and pull to a central server. It’s about merging file changes. When two devices edit the same card, the system uses merge rules—like last-write-wins or custom logic—to reconcile conflicts.

Why does this matter? Because it shifts the paradigm from dependency on always-on infrastructure to a more resilient, offline-first approach. By comparing file timestamps, content hashes, or employing custom merge strategies, the system can intelligently resolve conflicts, preserving user intent and minimizing data loss. This approach means you can work on multiple devices or offline, then sync confidently later—knowing that the system will handle discrepancies gracefully. The tradeoff is that conflict resolution can become complex if changes are extensive or overlapping, but with clear rules and atomic operations, you can maintain data integrity and flexibility in your workflow. It’s a design that prioritizes resilience and user control over traditional centralization.

Sync and Conflict Resolution Without a Server
Sync and Conflict Resolution Without a Server

Performance and Resilience: Why Local is Faster and Safer

Compared to cloud-heavy apps, Threlmark’s local-first approach offers snappy, real-time updates. No network lag, no waiting for server responses. You see progress immediately as files update.

More importantly, this setup provides a safety net—if your internet drops or a remote server fails, your work isn’t halted. You retain full control over your data, which remains on your disk, ready to be synced or backed up as needed. This resilience reduces downtime and dependency on external infrastructure, making your workflow more predictable and secure. The tradeoff? You need to implement effective sync and conflict resolution strategies, but the benefit is a system that’s inherently faster and more robust against outages. For many users, this tradeoff results in a more dependable and responsive project environment, especially in unpredictable or sensitive contexts.

Frequently Asked Questions

What does ‘disk is the contract’ really mean?

It means the entire system’s state is stored directly in files on your disk, which serve as the definitive source of truth. No database, no cloud—just a folder of JSON files everyone can read, modify, and sync.

Can I use Threlmark offline?

Yes. Since everything lives on disk, you can work offline, make changes, and then sync later—perfect for remote work or unreliable internet connections.

How do conflicts get resolved when multiple devices edit the same card?

Threlmark uses merge rules, like last-write-wins, to reconcile changes. When devices sync, it compares file timestamps and merges updates, preventing data loss.

Is this approach secure?

Data is stored in plain JSON files, so security depends on your disk encryption and access controls. You can encrypt your disk or use secure storage solutions to protect sensitive info.

What’s the biggest challenge with disk-first architecture?

Managing sync conflicts and ensuring data consistency across devices can be tricky. But with careful merge rules and atomic writes, you can build a system that’s both fast and reliable.

Conclusion

Threlmark’s disk is the contract isn’t just a clever phrase—it’s a blueprint for building faster, more flexible project tools. By making the filesystem the source of truth, you gain speed, safety, and total control.

Next time you think about project management, remember: sometimes, the simplest ideas—like treating your disk as the API—are the most powerful. Your data, your rules, no middleman needed.

You May Also Like

Natural Language Processing Explained

Imagine how machines understand human language—discover the fascinating world of Natural Language Processing and its impact on everyday technology.

AI‑Enhanced Cybersecurity: Detecting Threats Faster

Ineffective cybersecurity risks grow as AI accelerates threat detection, but discovering how it transforms security strategies reveals opportunities you can’t ignore.

Open Source AI Tools and Communities

Open source AI tools and communities are revolutionizing how you can collaborate,…

Show HN: Hsrs – Type-Safe Haskell Bindings Generator for Rust

Hsrs enables calling Rust code from Haskell with automatic, type-safe FFI bindings, serialization via Borsh, and minimal setup, streamlining cross-language integration.