{% extends "base.html" %} {% block title %}Mesh{% endblock %} {% block topbar_main %}
Everything you have here — projects, versions, history, freshness, the MCP server — runs with no account and no network. Joining a mesh adds one thing: your other machines, and your colleagues' machines, can pull these plans directly from this one.
The id is the hash of a key this machine generated. It was not assigned by anyone, and the private half has never left this disk.
flanner login <code>on this machine, not in the browser
flanner peer serveso others can pull from you
flanner peer pull <device-id>to take their work
Entitlements are short on purpose, and this device checks
them itself without asking anyone. That is what lets it keep working
on a train. Run flanner whoami --refresh to
pick up a new grant early.
Nothing is uploaded. When you pull, this machine asks a peer for a list of what it holds, then fetches only the versions it is missing. Each version was signed by the device that wrote it, so this machine checks it against that device's public key rather than trusting the sender.
A teammate can also push work to you rather than wait for you to pull it. That sounds alarming and is not: receiving a version adds it to your history, it does not change what you are working on. Nothing is ever overwritten here, so what you have open stays open until you decide otherwise.
Pushes are still checked. The sender needs the right role for what
they sent, every artifact is verified against the key of whoever
wrote it rather than whoever handed it over, and a machine
can decline pushes entirely with
FLANNER_ACCEPT_PUSHES=0 while still serving
every read.
You never edit on somebody else's computer, and there is no live cursor — this is closer to git than to a shared document.
Review works the same way. A proposal and a decision are records that sync like any other, which is why they survive being made offline.