Architect
Guides Docs
Site plan of one person's devices Five rooms on one plot: Desk, Laptop, Phone, Web and the Node. One sync line joins them through the Node, which is always on. The Laptop is offline, drawn dashed, and keeps working on its own copy. PROPERTY LINE · ONE ACCOUNT N NODE always on · headless 27/27 files held in full 1 DESK studio · pinned 2 verified copies 2 LAPTOP home · offline keeps working on its own copy 3 PHONE same vault same tabs 4 WEB /app/ in a browser signed in, live 5 AN EDIT · WITHIN 1 s A 201
Example plot, from the app's demo data: one musician's devices around the always-on node. Dashed means offline.
  1. 1

    Node. The Architect app run headless on a home server. One more peer, the one that is always online, holding every project in full.

  2. 2

    Desk. Pins the projects it works on. Each copy is checked by a possession challenge, and the count is shown.

  3. 3

    Laptop. Offline, and still working. Its edits merge when it is back; nothing waits on a server.

  4. 4

    Phone. The same vault and the same workspace, on the mobile app.

  5. 5

    Web. The app in a browser at /app/, signed in to your org.

A vault is a folder of markdown.

Architect opens a folder of notes, an Obsidian vault as it is, in a workspace of tabs, splits and docks. Everything below is kept as notes in that folder, so it syncs like the rest.

1A-101 The workspace. Notes open as tabs; drag one to a pane's edge to split it. What you arrange comes back the next time you open the vault.
  1. 1

    Notes and Bases. Markdown notes with properties, links and embeds. A .base file is a query over them, drawn as a table, cards or a list.

  2. 2

    Navigator. A folder tree beside the notes in the selected folder: Notebook Navigator, the Obsidian plugin, ported spec for spec.

  3. 3

    Calendar. Your events, and with Tasks and the Time Tracker, your tasks on their days and your tracked time. A day opens its daily note.

  4. 4

    Tasks and projects. A task is a note with type: task, in a list, Today, My tasks or a board. Projects keep goals and milestones as notes.

  5. 5

    Time tracking. Time your work on tasks and projects, and add it up.

  6. 6

    Capture. One line from anywhere: [[Project]], #tag, !high, next fri, every week are read as you type.

  7. 7

    Threads and notifications. Conversations on any note, project or task, with mentions and resolve; notifications that reach every device.

The capture inbox: five captured lines to sort, projects in the sidebar, and the selected item's details with Open, Done and Move to.
2A-101 The inbox, where captured lines wait to be sorted into projects.
The phone app's tab switcher: four open tabs as cards, Welcome, The app shell, Arrangement and Graph.
3A-101 The same workspace on a phone.
A-101VaultScale: not to scale

Every file held at home, pinned where you work.

An org's projects and asset libraries live on the node. Each machine pins the ones it needs and fetches the rest on demand. A registry knows every file on every device, and how many verified copies of it exist.

Section A through one file One audio file, 149-BASS DI.wav, 705.6 KB, cut through its holders. The node holds it in full, verified one second ago. The desk holds a cached copy, verified three seconds ago. The laptop holds it in full but is offline, unverified for two minutes. Policy asks for two verified copies; the file has two. SECTION A · 149-BASS DI-241011_2001.WAV · 705.6 KB NODE starcommand · full VERIFIED 1 s AGO reachable now DESK studio · cached VERIFIED 3 s AGO this device LAPTOP home · full UNVERIFIED · 2 min 1 offline 2 VERIFIED COPIES · POLICY 2 · MET
Section A, drawn from the file page below. The count is of copies a holder proved it has, not copies it says it has.
  1. 1

    A real folder. The drive mounts your roots at ~/Architect/<org>/Projects/…, so REAPER, a file manager or rsync reads and writes them like any other folder.

  2. 2

    Pinned, or on demand. Bytes are kept by SHA-256 and fetched from a peer or a server when opened, resuming after a dropped link.

  3. 3

    Versions, not a trash folder. Every save is a version, and so is a delete. Uploads resume and skip bytes the org already holds.

  4. 4

    Copies you can count. Holders sign what they hold, scrubs and possession challenges check it, and a policy says how many verified copies each file needs.

  5. 5

    S3 when you want it. Nodes can keep bytes in any S3-compatible store: Garage, MinIO, R2, AWS S3, Ceph.

  6. 6

    Found offline. Search finds every file on every device from the registry, even with every peer offline.

A project page, Crescendum Album: five audio files, and for the selected file its copies: two verified copies at two sites, desk and node, with the laptop offline and unverified.
1A-201 A file's copies, on its project page.
Storage health for an org: 7.7 MB of files, 6.5 MB under policy, 352.8 KB on one holder, nothing without a verified copy, and the holders with what each has verified.
2A-201 Storage health: what is under policy, and on whom.
A-201FilesScale: not to scale

Devices sync with each other. The server is one of them.

There is no separate Architect server. Every device is a peer, and the always-on node is just the one that never sleeps. Stop it, and every other device keeps working.

MarkWhatHow it works
P-1Peer to peer Devices exchange documents directly over iroh, finding each other on the LAN or through a relay. Each document checks who may read it.
P-2The always-on node Keeps a live bridge per note with each peer it reaches, so an edit gets to the others within a second.
P-3Live collaboration Presence shows who is in a document and what they point at, select and type; text merges as you both write.
P-4Share links Share a vault, a folder, a tag, a few notes or what a .base selects, to the public, anyone with the link, your org or named people. Read-only or with comments, until it expires or you revoke it.
P-5Published sites A vault becomes a static site of finished HTML, rebuilt when the vault changes. These docs are the first site built with it.
P-6Your devices, admitted Your own devices, members an org enrolled with a role, and devices paired by a six-digit code or a QR code. Revoke one and its next call is refused.
A-301SyncSchedule

Every feature is an extension.

Calendar, Tasks, Projects and the Time Tracker are extensions, built the way yours would be. Turn one off and the app goes on without it. Every command is one action on the Action List, run the same way by keys, menus, ⌘K, scripts, extensions and agents over MCP.

1A-401 Extensions, scripts, workers, themes, layouts and pages, in one manager.
The ⌘K palette with 'count in' typed: the Metronome extension's count-in action first, then actions from the Board, Settings and Extensions.
2A-401 ⌘K runs any action, an extension's included.
  1. 1

    Data. Declarations only: settings, keys, views.

  2. 2

    Luau. Actions as scripts, run as one undo step.

  3. 3

    Process. Its own program, with views drawn in the app's window.

  4. 4

    Hot reload. Loaded from a registry, reloaded as you edit it.

A-401ExtensionsScale: not to scale

Built for Studio.

FastTrackStudio's music apps, Studio, Session, Signal and Keyflow, are built on architect. The same vault holds the setlists, charts and session notes; the same drive holds the audio, where REAPER can open it.

  • Studio
  • Session
  • Signal
  • Keyflow
1M-101 A Keyflow chart in a note, drawn by an extension. Turn it off and the fence is plain text again.
  1. 1

    Charts in notes. A Keyflow fence in a note is drawn as a chart by the extension that claims it.

  2. 2

    Audio on the drive. Session files sit in a real folder, so REAPER opens them like any other.

  3. 3

    Presence. Pointers name a place, a track and a time, not pixels, so each app draws them in its own view.

M-101StudioScale: not to scale

Your server is the app, run headless.

The node is the same binary with no window. Run it on a home server and it holds your org's projects, serves your sites and share links, and gives agents MCP. It is released as a container image built with Nix.

General notes

# the node, from the app's own binary
architect-desktop serve --config architect.toml

# or the image, published with each release
ghcr.io/fasttrackstudios/architect:latest
8080/tcp
HTTP: sites, share links, the web lanes, MCP
7777/udp
iroh, for peers that reach it directly
/data
its key, documents and built sites
GET /health
answers ok
S-101Self-hostGeneral notes

The framework underneath.

architect is the Rust framework the app is built from. Declare each service and document once, and it gives you every wire, offline and peer-to-peer sync, and one Action List that keys, menus, scripts, extensions and MCP all run.

#[architect::service(actions)]
pub trait Greeter {
    async fn greet(&self, name: String) -> Result<String, GreetError>;
    #[subscribe]
    fn greeted(&self) -> String;
}
From this one trait: the vox service, POST /greeter/greet, /greeter/greeted as Server-Sent Events, GreeterClient and GreeterHttpClient, and the action GREETER_GREET for keys, menus, scripts and MCP.
Four embedded views in the workspace: a Dioxus component, a Frame surface with a drive knob and meter, a Luau script's immediate-mode window, and an agent's A2UI checklist.
1D-101 Views from Dioxus, Frame, a Luau script and an agent's A2UI, side by side in one workspace.
  1. 1

    Contracts. Services and entities declared once: vox in process, over WebSocket and iroh, and HTTP with JSON and SSE.

  2. 2

    Documents. Loro CRDTs with kinds, migrations and named undo, in a crash-safe file per document.

  3. 3

    Sync. Org sync, peer to peer over iroh, presence and collaborative text.

  4. 4

    The shell. Tab groups in splits, docks, pop-out windows and native menus, with key bindings, chords and which-key.

Read the docs Source on GitHub

D-101FrameworkPre-1.0: any release may break the API