Skip to content
tie v0.9.0 · local-first · BSD-3

Tie itall together.

A local-first library for your files, music and photos — tagged, deduplicated and mountable as plain folders. Native apps to enjoy it, and anneal, a coding agent that improves its own harness.

v0.9.0 released Nov 8 No accounts. No cloud. No trackers. Source ↗
one library, every app local
Apps
9a1f3c…c03e
tie
content-addressed blobs + triples, joined by the content hash
the same hash, both ways
your disk · plain files you can back up with rsync, or one .tie file
$ ls "~/mnt/query/jazz mellow -live"
baker-street/  kind-of-blue/  slow-cooling/
The model

One hash. Two stores. Every app.

tie splits what a file is from what it means. The bytes live in a content-addressed blob store; the meaning lives in triples. The content hash is the join, so tags, ratings and history follow the content — not the filename.

holiday-2014.jpg
4.2 MB · shot in Reykjavík
9a1f3c0b7e…4d2ac03e
The bytes → tie-filehost
Stored once, under its hash. Deduplication is a property of the model, not a cleanup job — and every download is verified.
The meaning → triples
tag travel member-of iceland rating 4 path tie:/photos/2014 taken-at 2014-06-18
Mount as a folder Search the words Dedupe by content Verify every hash
60 seconds

A library that behaves like a folder.

No service to run, no schema to design, no import you can't undo. Point tie at a directory, then browse it by meaning.

  • Import once. Tags attach to the content hash, so a rename or a re-import never loses them.
  • Mount it. Use Dolphin, Finder or Explorer — every path is a live tag query.
  • Nothing is locked in. Content hashes, TSV dumps and a single-file store that backs up with rsync.
you@studio tie v0.9.0
$ tie import image-dir ~/Pictures/Holiday \
      --tags travel --tags 2014
  imported 214 files · 3.1 GB · 197 new blobs
  deduplicated 17 files (1.2 GB) by content

$ tie mount --db ~/mnt
  mounting live tree at ~/mnt

$ ls "~/mnt/query/travel 2014 -screenshots"
iceland/  lisbon/  kyoto/

$ tie verify --deep
  ok forward 98,179,667 · reverse 4,203,118 · 0 findings
anneal

Work. Learn. Improve.

anneal is a local-first coding agent built on tie. It works with tools, reviews finished sessions while idle, and proposes changes to its own harness — with evidence, and only if you promote them.

01
Work Chat with tools, approvals, a queue and a turn budget. Plan first, then build.
02
Learn Project memory, agent-authored skills and session recall, all stored in tie.
03
Improve Propose, probe, compose. A successor harness is tested before it can be promoted.
anneal chat
anneal's chat view: a tool-using session with an approval card, a plan and a task list

A permission request, a tool trail and a plan — the parts a chat window usually hides.

Measured, not promised

The depth is in the details.

Every number links to the engineering note it came from. If the note changes, the claim check fails.

How it's made

Small tools. Sharp edges filed off.

Local-first
The library is a file, the servers are optional, and nothing leaves your machine unless you mount it there.
Native, not browser-shaped
Go and Fyne. A single binary that starts in a frame, not a tab. Light and dark themes are designed, not inverted.
Honest engineering
Numbers are measured on the real database. Reverted experiments are written down. Limits are on the page.
Open and porous
BSD-3. Content addressed. TSV in and out. The Go and Python clients are first-class, not an afterthought.
Scriptable
fynerisor turns Fyne into a Risor canvas; anneal's Harness view is one. The UI can be extended without a rebuild.
Quiet by default
No telemetry, no accounts, no web fonts on this site. The only dependency is your own machine.

“I wanted my music, my photos and my files in one place I could understand — not a service I had to trust. tie is that place: files on disk, meaning in triples, and a hash that keeps them honest.”

Take the library for a spin.

One binary, a test environment and a 60-second tour. No account, no cloud, no telemetry.