blegacy.net · drawing set BP-26 · a self-hosted year

Year One:
the house gets an operating system

Nine months ago this was one document-signing container on a rented VM. It's now a platform: the books, the bank, the funds, the chores, the paper, and the tasks all run at home — and the newest builds aren't tools anymore, they're engines that converge on a target state.

24 builds on platform 2 Coolify servers Oct '25 → today 5 tools retired & replaced newest build: born this morning

Site survey — the before-times

None of this started as a hosting hobby. It started as rituals that ate weekends.

Existing conditions — demolished

  • Quicken sessions to hand-shepherd every household transaction
  • Excel monthly close — add rows, drag formulas, hope
  • Motion scheduling tasks in someone else's cloud
  • Evernote holding a decade of notes hostage
  • Paper piles waiting to be scanned, named, filed
  • Chore arguments adjudicated from memory
  • Deploy something → hand-edit the dashboard, the monitors…

As-built — the platform era

  • A ledger engine ingests two bank rails and heals itself
  • Fund closes render statements, K-1s, and the annual FS
  • Luz runs the tasks — its wrapper over a Vikunja engine, 423 tasks in five thinking modes, at home
  • All 668 notes archived locally; the wiki lives on Outline
  • The scanner names its own files and emails them in
  • The wall calendar runs the chore law; stars are weight, not currency
  • Deploys self-register — tiles and monitors appear on their own

As-built chronology

Every birthdate below is real — pulled from Coolify's own records (created_at). Big dots are builds; small dots are the moments between them.

    Detail drawings — the builds, and the why of each

    Wire diagrams over write-ups. Each one exists because a ritual died.

    2026-01-01 · ledger.blegacy.net

    The books come home

    Manager.io, deployed on New Year's Day — a resolution in container form. Once the business books lived at home behind an API, everything downstream became possible.

    Business accounting in someone else's cloud, exportable only by hand, readable only by humans.
    Books at ledger.blegacy.net with an API — now the upstream source for the HoldCo posting cube and the tax render. Weekly portable .manager snapshots land in Drive.
    banks · IBKR Manager.iothe family books api2 posting cube HoldCo consolezero drift vs TB 1065 renderevery line sourced
    2026-01-19 · ai.blegacy.net

    The nerve-center era

    n8n was the first taste of the house doing work by itself: flows pulling bank data through SimpleFIN and posting it into Firefly. It worked — and it taught the bigger lesson: a flow automates your steps; an engine replaces them.

    Copy-paste plumbing between money apps; every new need meant another hand-built flow to babysit.
    The flow era did its job and is now being eaten by an engine — Mula ingests the same rails directly, with integrity checks no flow ever had.
    2026 · THE FLOW ERA — RETIRING SimpleFIN n8n flows Firefly III JULY 2026 · THE ENGINE SimpleFIN rail OFX rail Mulaself-healing ledger household truthtied-through, always
    2026-01-28 · the front door

    One page that sees everything

    Homepage turned bookmark soup into a single wall of tiles — and then came the better half: deploys now register themselves. The dashboard is generated from data the platform already emits, because any per-deploy manual step is toil.

    Every new deploy meant hand-editing YAML for a tile, then again for a monitor. The dashboard drifted from reality within weeks.
    An hourly timer reads Coolify's labels through one shared primitive, blegacy-discover, and rebuilds both the tiles and the uptime monitors. Curated tiles stay curated; new deploys just… appear.
    Coolifycontainer labels blegacy-discoverone shared primitive homepage-autogen⏲ hourly kuma-autogen⏲ hourly tiles monitors
    TOOLS FINANCE FAMILY
    home.blegacy.net — self-registering tiles
    2026-05-20 · luz.blegacy.net

    Luz — a personal OS, not a habit tracker

    The hard-won part isn't the dashboard, it's the model: categories resolve to a rolling-7 daily state — Healthy, Stabilizing, Drifting — and the deep stats are the distribution of those end-of-day states, never tick averages. Still days count as help.

    Scattered self-tracking whose averages flattered or lied; no honest answer to "how am I actually doing?"
    One state per category per day, and a distribution you can trust. Chief (the chief-of-staff persona) reads it; the week gets framed from it.
    life events twin classifiersme-system · life-stats rolling-7 daily statehealthy · stabilizing · drifting deep statsstate distribution
    LUZ · today Bodyhealthy Mindstabilizing Crafthealthy Orderdrifting DEEP STATS — 30-day distribution
    luz.blegacy.net — states, not averages
    2026-05-21 → 22 · bgf.blegacy.net · vol.blegacy.net

    The fund platform grows up

    The v1 was a faithful automation of the Excel ritual — and it got thrown away, on purpose. The v2 is a close engine: source data goes in, and everything renders out of one authoritative ledger. The engine outranks the hand workbooks now.

    Monthly close = add rows, drag formulas, reconcile by eye. Tax season = a second, scarier version of the same ritual.
    One close → renders the monthly statements, the 1065/K-1 package (GPP line 4 included), the transparency workbook, and the annual FS as an editable Word deliverable. Transfers roll through TWC and K-1 Part L automatically.
    source dataIBKR · banks · docs close engineledger is authoritative monthly financial statements tax engine — 1065 · K-1s fund workbook (transparency) annual FS — editable .docx
    2026-05-25 → 07-10 · boss.blegacy.net

    BOSS — the family gets a bank (and a holding company console)

    A hub with real auth — account roles plus per-spoke grants — and spokes that are engines, not apps. Banc converges a bond portfolio toward policy; HoldCo reads Manager into a zero-drift posting cube and renders the 1065. And since July 9, Claude can read the bank through a read-only MCP connector on the BOSS login.

    Bond picks made ad-hoc from broker screens; holdco books opaque between tax seasons; nothing shareable with the family.
    A policy defines the target balance sheet and the engine surfaces gap actions. The books tie out to Manager's TB with zero drift, FY24 through YTD. The 2025 tax render matches the filed, accepted return.
    BOSS hubroles + per-spoke grants Bancbond convergence engine HoldCoposting cube · 1065 IBKR bonds Manager api2 MCP · read-onlyClaude reads the bank
    BANC · balance sheet Assets▮▮▮▮▮▮ LADDER · maturities gap actions: 2 · watch items: 1
    boss.blegacy.net/banc — converge, don't pick
    2026-06-29 · paperless.blegacy.net

    Paper stops being a chore

    Paperless-ngx is the destination, but the build is the two rails feeding it — one from the scanner on the desk, one from Drive, neither needing a human after the first touch.

    Scan piles named Scan_0042.pdf, filed never. Shared-Drive folders full of PDFs no search could see.
    The ScanSnap's output names itself from the document's first line and emails itself in. Finder-tag any Drive folder Paperless and the VPS syncs it nightly — read-only, deduped, no Mac awake required.
    RAIL 1 · THE DESK ScanSnap Mac watchernames by first line Gmail inbox RAIL 2 · THE DRIVE Drive folder🏷 tagged “Paperless” VPS rclone3am · read-only Paperless-ngxsearchable, forever
    2026-06-10 → 07-12 · status.blegacy.net · ntfy.blegacy.net

    The house watches itself

    ntfy gave the house a voice; Kuma gave it eyes; kuma-autogen wired the reflex. Failures used to be discovered by surprise — now the platform announces them, and even the IBKR gateway says which app needs its 2FA login.

    A container dies quietly on a Tuesday; you find out Saturday when a page won't load. New deploys were invisible until someone remembered to add a monitor.
    Deploys self-register as monitors within the hour. Alerts hit the phone via ntfy. Uptime surfaces inside Home Assistant. Zero monitors added by hand since July 12.
    Coolify deploys kuma-autogenvia blegacy-discover Uptime Kumaevery site, always ntfy 📱 IBKR gatewayneeds 2FA? login notifier Home Assistantstatus in the Home view
    KUMA · status.blegacy.net boss.blegacy.net100% luz.blegacy.net100% faro.blegacy.net99.9% plane.blegacy.netretired ledger.blegacy.net100% mula.blegacy.netnew today alerts → ntfy · blegacy-uptime
    the red dot on Plane is the delete-reminder
    2026-07-06 → 07 · luz.blegacy.net · vikunja engine underneath

    The tasks join Luz

    Motion's replacement was decided the self-hosted way: deploy both contenders (Plane and Vikunja, born the same day), migrate real data, live in both, keep the winner — Plane was retired the next day. But the feature piece isn't the task app: it's Luz, a subset of which wraps the Vikunja project manager, making tasks just another surface of the personal OS.

    Motion — a subscription doing opaque AI scheduling of the family's actual life, in someone else's cloud.
    Luz fronts the tasks — its task layer wraps a Vikunja engine holding the 423 migrated tasks in five thinking modes with global labels, at home. Chief plans the week through it: Vikunja is the engine, Luz is the face. Plane's dead tile stays on Homepage as a red-dot delete-reminder.
    Motion423 tasks, exported Plane☠ retired in ~24h Vikunjathe engine · won Luz · task wrapperthe OS face · Chief
    LUZ · tasks — Creation Creation Care Order 423 tasks · global labels · at home
    luz.blegacy.net — Vikunja under the hood
    2026-07-12 · faro.blegacy.net — family launch day

    Faro — chores become law

    A lighthouse on the Skylight wall calendar: daily routines, weighted duties, an up-for-grabs bounty board, and a freedom gate per kid. House law is encoded, not remembered: stars are weight, not currency; behavior never touches the ledger — there is deliberately no tool to award or dock stars.

    Chore charts enforced from parental memory; disputes settled by whoever argued loudest; "did you do it?" asked nightly.
    Cards fall to the board at 10pm if unchecked, the 3am sweep settles the day, ntfy announces, and false check-offs get publicly disputed. Parents keep pardon power — mercy is in the spec.
    seed engineroutines · duties Skylight boardthe wall is the UI 10pm fall-to-board3am sweep settles freedom gatesgreen / red per kid ntfy
    FARO · today's board Kid A ● Kid B ● UP FOR GRABS · bounties ★ 3 ★ 5 ★ 2 gates: A green · B red until swept
    faro.blegacy.net — launched to the family 07-12
    2026-07-13 · mula.blegacy.net · born this morning

    Epilogue — Mula, and the shape of year two

    Framed yesterday, deployed today. Mula is the household ledger engine: a self-healing, dual-rail transaction system with a tied-through integrity model. It exists to retire three things that appear earlier on this very timeline — the Quicken ritual, the n8n money flows, and Firefly. That's the arc in one build: year one deployed tools; year two replaces them with engines that hold a target state.

    Transactions shepherded by hand in Quicken; a flow-and-app chain (SimpleFIN → n8n → Firefly) that worked but couldn't prove itself right.
    Two independent rails, tied through so the books prove their own integrity. No drift alerts — a remediation ladder fixes what it can. Humans are only summoned for MFA.
    SimpleFIN rail OFX rail tie-throughintegrity model household ledgeralways reconciled self-fixing: the remediation ladder · humans only for MFA

    Hidden layers — not shown on plan

    The builds with no tile — the ones that make the visible ones safe to run.

    App-centric backups

    Backup/restore scripts on the VPS, per-app, landing in Drive as Coolify Backups/<date>/<app>/. Restore one thing, not everything.

    Manager snapshots

    Weekly portable .manager files per business, age-purged after 3 months. A whole company restores via Add Business → Import.

    No root, ever

    Services run as unprivileged users; admin flows through sudo; prefer no-sudo paths like HTTP APIs. House law since day one.

    blegacy-discover

    The one primitive that reads what Coolify emits. Homepage and Kuma both feed from it — the next consumer could be this page.

    IBKR login notifier

    A systemd watcher that pings ntfy naming which gateway needs its 2FA dance. The one manual step left is at least announced.

    The archives

    Evernote fully exported — 668 notes to local ENEX + Markdown (2026-07-07). Exit ramps are built before they're needed.

    General notes — laws of the house

    Learned the expensive way, encoded so they stay learned.

    Any per-deploy manual step is toil. Don't relocate the step to a nicer UI — derive it from data the platform already emits.
    Automating your steps builds a 1.0 you'll throw away. Name the job, define the target state, and build the engine that converges on it. The fund platform learned this; Mula was born knowing it.
    The engine outranks the hand workbook. When the ledger and the spreadsheet disagree, the spreadsheet is wrong — or it's evidence, never authority.
    No drift alerts — remediation ladders. A system that can detect a problem can usually fix it. Summon humans only for the things machines truly can't do (MFA, mercy).
    Run the bake-off with real data. Plane vs Vikunja was settled in 24 hours by living in both. Opinions are slower and worse.