📊 Full opportunity report: Disk Is the Contract: Inside Threlmark’s Local-First Architecture on ThorstenMeyerAI.com — validation score, market gap, and execution plan.

TL;DR

Threlmark’s new project management tool uses a local-first, file-based architecture where the disk is the single source of truth. This approach enhances portability, inspectability, and safety, eliminating the need for a central database.

Threlmark has unveiled a novel architecture for its project management system that relies entirely on local disk storage, with the files acting as the definitive record. This design eliminates the need for a centralized server or database, emphasizing portability, inspectability, and safety. You can learn more about the Threlmark: Disk Is the Contract approach. The system’s core principle is that the on-disk layout is the API, making it uniquely accessible and interoperable.

The system stores all project data as plain JSON files within a dedicated directory, defaulting to ~/.threlmark, which can be overridden via an environment variable. Key files include a manifest (threlmark.json), a dependency graph (links.json), project metadata (project.json), lane configurations (board.json), and individual cards stored as separate files within the items/ directory. External tools can read and modify these files directly, enabling seamless integration without a server.

This architecture supports several properties: every artifact is inspectable, portable, interoperable, and restartable. Files can be backed up, migrated, or shared easily, and tools in any language can join by reading and writing files. The system’s safety relies on disciplined file operations, particularly atomic writes, which prevent corruption during crashes, and tolerant read-merge-update patterns that ensure forward compatibility.

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

JSON file-based project management tool

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
Local Data Storage in Kotlin: Managing Databases in Android Environments (The Android Developer's Playbook)

Local Data Storage in Kotlin: Managing Databases in Android Environments (The Android Developer's Playbook)

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
AI-Powered Workflow for Independent Illustrators: Simple Strategies for Client Projects and Delivery Automation (AI driven)

AI-Powered Workflow for Independent Illustrators: Simple Strategies for Client Projects and Delivery Automation (AI driven)

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
WD 5TB My Passport Ultra for Mac Silver, Portable External Hard Drive, backup software with defense against ransomware, and password protection, USB-C and USB 3.1 - WDBPMV0050BSL-WESN

WD 5TB My Passport Ultra for Mac Silver, Portable External Hard Drive, backup software with defense against ransomware, and password protection, USB-C and USB 3.1 – WDBPMV0050BSL-WESN

USB-C and USB 3.1 compatible.Specific uses: Business, personal

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.

Why ‘Disk Is the Contract’ Transforms Project Data Management

This approach fundamentally shifts how project data is stored and managed, removing reliance on centralized databases and enabling true portability and interoperability. It allows users to back up, migrate, and integrate their project data with other tools effortlessly, while also ensuring data integrity through atomic operations. For developers and teams, this means more control, transparency, and resilience in managing project workflows, especially in multi-tool environments or when automating with AI agents.

The Evolution of Local-First Project Management Tools

Traditional project management tools often depend on cloud servers or proprietary databases, which can lead to lock-in and reduce data transparency. Threlmark’s architecture builds on the growing trend of local-first tools that prioritize user control over data. Its design choices draw from previous work on file-based state management, emphasizing atomic file operations and tolerant data merging to ensure safety and compatibility. The concept of ‘disk as the contract’ aligns with broader movements toward open, portable data formats in software development.

“The core idea is simple: the on-disk layout is the API. This choice cascades into how concurrency, external integrations, and automation work — all without a database. For a detailed explanation, see Disk Is the Contract: Inside Threlmark’s Local-First Architecture.”

— Thorsten Meyer, creator of Threlmark

Remaining Questions About Threlmark’s File-Based System

It is not yet clear how well this architecture scales for very large projects or teams, or how it performs under high concurrency. The adoption curve and integration with existing workflows are still emerging, and user feedback will shape future refinements. Additionally, the specifics of how external tools will handle complex data merges in practice are still being tested.

Next Steps for Adoption and Development of Threlmark’s Architecture

Development will focus on enhancing support for larger projects, improving user interfaces, and expanding integrations with external tools. The team plans to gather user feedback to refine the system’s robustness and usability. Broader adoption will likely depend on community engagement and the development of plugins or extensions that leverage the file-based API. You can explore the Threlmark: Disk Is the Contract for more insights.

Key Questions

How does Threlmark ensure data safety without a database?

It uses atomic file writes, where each update writes to a temporary file and then renames it atomically, preventing corruption during crashes.

Can external tools modify Threlmark data safely?

Yes, since each artifact is stored as a separate JSON file, tools can read and modify these files directly, provided they follow the atomic write patterns.

Is this architecture suitable for large teams or complex projects?

This is still under evaluation; scalability and performance with very large data sets are areas for future testing and development.

How does this approach compare to traditional cloud-based project tools?

It offers greater control, portability, and transparency, but may require more manual management or local automation compared to cloud solutions.

What are the main benefits of ‘disk is the contract’?

It makes data portable, inspectable, interoperable, and safe, enabling seamless integration and recovery without relying on external servers.

Source: ThorstenMeyerAI.com

You May Also Like

Opus 4.8 and the New Test for AI Coding Agents: Honesty Under Pressure

Opus 4.8 is framed as a reliability release for coding agents, with new attention on silent failures, audits and enterprise trust.

Show HN: Kage – Shadow any website to a single binary for offline viewing

Kage clones websites into offline-ready folders or single files, stripping scripts for safe, persistent browsing without internet access.

Upcoming breaking changes for npm v12

npm v12 will introduce security-focused default changes, blocking scripts and dependencies unless explicitly allowed, with release expected in July 2026.

Pyodide 314.0: Python packages can now publish WebAssembly wheels to PyPI

Pyodide 314.0 introduces support for publishing WebAssembly wheels to PyPI, streamlining package distribution for Python-in-the-browser ecosystem.