Drop a letter in the family chat, ask about it months later, and get the answer with its source. famstack files your family's documents, backs up the photos from every phone and turns voice memos into a family diary. A family wiki writes itself from all of it. Nothing leaves your home: it runs on a Mac in your house, with local AI. Open source.
"I built this because our photos, our voices, our documents: That's our life. It belongs on our hardware, not in someone else's cloud."
"I am absolutely crazy excited about the idea of just uploading documents and then being able to ask the AI later questions about it if I need information." (an early adopter on Discord)
The reference implementation runs on a Mac Studio M1 in our living room at Lake Constance, Germany. Where is yours going to run?
Note
v0.4.0 is the current release.
famstack runs in other homes now, not just ours. If it doesn't work in yours, tell me: open an issue, start a discussion or join our Discord. If it works: please share it. A star, a post, a mention. That's what keeps a project like this alive.
Tip
New in 0.4
- A family diary. Post voice memos, photos and a few lines in the Memories room, and famstack keeps them as plain files you own and back up, and turns them into a diary you can keep forever, with a nice web page to browse your memories.
- Lists and a calendar in the chat. Tell Stacky, the family agent, what goes on the shopping list: by text, by voice or with a photo of a handwritten list. How lists work.
- A wiki that starts with the family. The home page shows the household at a glance, what happened last month and what is ahead.
- Talk to the bots. A voice message works like a typed one, and the bots answer in the encrypted chats you invite them to.
- Updates in one command.
./stack updatemoves your install to the newest release, and a menu bar app shows and controls the stack.
Stacky is beta, and the part I am most excited about: it is the main topic of 0.5. Read the 0.4.0 release notes.
famstack takes on the everyday pain of managing a family and closes the gaps I ran into myself, like keeping our memories.
- Documents you can ask about. Photograph a letter and send it to the chat. The local AI files it in a document archive with OCR, and when you ask about it later, the answer cites the documents (Paperless-ngx).
- Photo library and mobile backup that replaces iCloud Photos for the whole family (Immich).
- Your family diary: voice messages, photos and notes from the Memories room, read back month by month in your own words. Correct any memory by replying to its card in the chat (memory).
- Your family wiki: written from the documents, notes and voice memos you file, kept as plain Markdown files you can open in Obsidian (memory).
- Stacky, the family agent (beta): keeps the shopping list, the packing list and the calendar, and answers from what the family has filed. By text or by voice (agent).
- Private family chat with native iOS, Android, macOS, Windows and web apps (Matrix + Element X). Use it for more than chat: to share files and notes between your own devices.
- Local AI on the Mac's GPU, or on a bigger Mac elsewhere in the house: voice transcription, text-to-speech and the language model (oMLX + Whisper + Piper).
- Bots in the chat that do the small stuff: filing receipts, transcribing voice memos, status reports.
- Email into the family memory: point a mailbox at a chat room and new family mail (with its attachments) lands there for the archivist to file, Stacky to answer and in your wiki to showgo. newsletters and marketing filtered out (IMAP, read-only, private).
- One CLI to operate it all:
./stack up <thing>and it is running.
The family wiki: what your documents say about the family, every line with its sources
archivist-demo.mp4 |
|
| The archivist files and finds documents from your phone, in chat | Ask the wiki a question in chat, get an answer with sources |
Everything runs on your Mac. Nothing leaves your network unless you tell it to.
You need a Mac with Apple Silicon (M1+), Homebrew, and OrbStack (or Docker Desktop). 16 GB of memory runs it with a smaller model: fine in English, weaker in German, and tight with voice on. 32 GB gives the best answers. The installer guides you through anything that's missing. If your python3 is Apple's Command Line Tools build (3.9), run brew install python first.
git clone https://github.com/famstack-dev/famstack.git && cd famstack
./stack # Starts the InstallerThe installer checks dependencies, sets up your data directory, and gets the nervous system running: Matrix and Element X. Once you log in to your private Element X, you operate the stack from your Server Room. Or your Terminal. From there, add what your family needs:
./stack up docs # Paperless-ngx: document archive with OCR
./stack up ai # Local AI: TTS, Whisper, oMLX
./stack up photos # Immich: family photo library + mobile backup
./stack up code # Forgejo: private git server, needed by memory
./stack up memory # family wiki and diary (needs code)
./stack status # check everything is runningYour Mac is too small for local models? Skip ./stack up ai and point the stack at an AI server on another machine or a hosted provider instead: ./stack ai switch <url> (see the Admin Guide).
Twenty minutes from clone to a working family server. The Admin Guide covers install, stacklets, operations, and troubleshooting in detail. The User Guide is the page you send your family: what to type in chat and what comes back.
Then explore your stack in your family messaging
People who know what a Terminal is. Families that are interested in Tech. Families who are tired of uploading their kids' photos to servers they don't control. Parents who'd rather spend Saturday morning with their kids or tinkering rather than searching for a specific important document. Families who want to take advantage of tech and store memories of their lives where it belongs: your home.
No Linux experience required, no Docker knowledge assumed. If you can run a shell command, you can run famstack.
I was manually copying photos off my phone with a cable. Like a caveman. Twenty years of automating things for businesses as a veteran software engineer, and my own family was running on drawers full of paper and a 15-year-old Synology NAS that hadn't seen an update in years.
In March 2026 we started recording our kids' voices in a family chat room. Tiny moments, funny things they said, bedtime stories in their own words. We wished we'd started with our first son. Those memories would be gone forever. Now they're not. They live on our own server, transcribed, searchable.
That's what this is. An open source stack that puts photos, documents, family memories and local AI on a Mac in your home. Private, no subscriptions, and no cloud provider that might shut down next year. But it's not just archiving. The goal is an assistant for the family: something that remembers, organizes, and eventually runs the boring parts of everyday life for you. Think JARVIS, built one stacklet and bot at a time. Stacky, the family agent, is the first step.
famstack is composed of stacklets: self-contained mini-stacks that snap together. Each stacklet is just Docker Compose, shell scripts, and a TOML manifest. No custom runtime. Convention over configuration and a small CLI gluing it together. It's just a convenience layer on top of existing open source technologies. No lock-in. You don't need an eject button, because there is nothing to eject.
famstack/
├── stack CLI (single Python file, zero pip deps)
├── stack.toml User configuration (domain, data dir, timezone)
└── stacklets/
├── core/
│ └── stacklet.toml Always-on infrastructure (Caddy, Watchtower)
└── photos/
├── stacklet.toml Manifest: identity, env config, health check
├── docker-compose.yml
├── hooks/ Lifecycle hooks: install, start, stop (idempotent)
├── caddy.snippet Reverse proxy config
└── .env Auto-generated by 'stack up'
I was quite annoyed with juggling a gazillion .env files and with secrets. So I fixed it. One central configuration, one single source of truth. Everything else is just derived.
No manual .env editing. stack up generates it every time from three sources:
- stack.toml for paths, domain, timezone
- stacklet.toml
[env.defaults]for templates like{data_dir}/photos/library - .stack/secrets.toml for auto-generated passwords (created once, reused on re-up)
Change something in stack.toml, run stack up again, and the .env regenerates to match.
All persistent data lives in ~/famstack-data/<stacklet>/ (configurable) outside the repo.
Each stacklet owns its subdirectory. stack destroy wipes it, so back up that directory separately.
Each stacklet except core and messages is opt-in. You can mix and match them as you please. Messages is optional in theory (But without it, the whole point of famstack is a bit neglected). Messages allows you to operate the stack from your smartphone.
famstack comes with a lightweight bot runtime. The bots are tiny helpers that automate tasks in your family chat: filing documents, transcribing voice memos, managing your stack. The agent stacklet (beta) adds Stacky, a family agent built on nanobot that keeps your lists and answers from your own notes.
| Stacklet | Status | Service | What it does |
|---|---|---|---|
| core | working | Bot Runner, Watchtower | Reverse proxy and the famstack Bot runner |
| messages | working | Matrix + Element | The famstack central WhatsApp-like communication center. |
| photos | working | Immich | Family photo library and mobile backup |
| docs | working | Paperless-ngx | Document archive with OCR |
| ai | working | TTS, Whisper, oMLX | Turns your Mac into an AI Machine |
| memory | working | Forgejo, Quartz | Family wiki, diary and lists, kept as plain files |
| backup | beta | rsync | Append-only backups of photos, documents and the chat |
| agent | beta | nanobot | Stacky, the family agent in your chat |
| chatai | deprecated | Open WebUI | ChatGPT-like chat interface, removed in 0.5.0 |
| code | beta | Forgejo | Private Git server |
| infra | beta | Caddy, AdGuard | Domain mode: your own names, with HTTPS |
Want to add your own to your stack? Creating a stacklet takes about 15 minutes.
Document filing, photo backup, family chat with voice memos, and the family memory wiki all work today, first tagged as v0.3.0-beta.1 (what landed in 0.3). v0.4.0 adds the family diary, household lists, the family agent, encrypted chats with the bots, backups and one-command updates. 0.5 is about Stacky as the family's assistant and an even better family wiki.
| Feature | Status |
|---|---|
| Photos (Immich) | ✅ Live |
| Document filing with OCR (Paperless) | ✅ Live |
| Family chat + voice memos (Matrix) | ✅ Live |
| Local AI backend (oMLX, Whisper, TTS) | ✅ Live |
| Bot runtime (archivist-bot, scribe-bot, stacker-bot) | ✅ Live |
| Private Git server (Forgejo) | ✅ Live |
| Family wiki generated from your documents (memory) | ✅ Live |
| Family diary from the Memories room (memory) | ✅ Live |
| Family memory bank (voice + photos matched by day) | ✅ Live |
| Document Q&A with citations, in chat | ✅ Live |
| Voice memos become searchable notes | ✅ Live |
| Topic rooms: the room name is the filing system | ✅ Live |
| Bots answer in encrypted chats | ✅ Live |
| Household lists, kept by the family agent (agent) | 🚧 Beta |
| Backups (backup stacklet, append-only to attached disk) | 🚧 Beta |
Nice domains setup e.g. https://photos.home.domain.tld |
🚧 Beta |
| Stacky as the family's assistant (0.5) | 🚧 Beta |
| An even better family wiki (0.5) | 🎯 Next |
| Bot interaction patterns (how a family talks to bots) | 🎯 Next |
| Dream cycle (memory consolidation, richer wiki pages) | 🎯 Planned |
| Home Assistant | 🎯 Planned |
| Talk to your Mac | 🎯 Planned |
| Living room display (memories from this day, years ago) | 🎯 Planned |
The ones you'll use day to day:
./stack up <stacklet> # start (idempotent)
./stack down <stacklet> # stop, data stays
./stack status # health overview: containers + host + AI
./stack logs <stacklet> # tail logs
./stack errors # recent error logs (past 24h)The full reference (lifecycle, observability, AI, config) lives in the Admin Guide. All commands output JSON when piped; --json and --pretty force the format.
stack.toml is the single config file. Committed to your fork.
Each stacklet has a stacklet.toml in the root of the stacklet directory for stacklet-specific configuration.
[core]
domain = "home.internal" # wildcard DNS on your router, or empty for port mode
data_dir = "~/famstack-data" # all persistent data (databases, uploads)
timezone = "Europe/Berlin"
[updates]
schedule = "0 0 3 * * *" # Watchtower nightly image updatesEverything lives in docs/: the User Guide, the Admin Guide, the stacklet reference, creating your own stacklet, and the architecture decision records.
famstack is young and shaped by daily family usage. The most useful contributions right now:
- Run it and report. A fresh install on hardware I don't have is worth more than code. Open an issue with what broke.
- Build a stacklet. Creating a stacklet takes about 15 minutes. If it's useful for your family, it's probably useful for others.
- Tell me what's missing. Start a discussion or join the Discord and tell me what your family would actually need.
AGPLv3, Copyright 2026 arthware.dev
This code was created with the help of frontier AI. There is simply no other way for a family father as a side-project. I refuse to call it vibe coded though. It took too long for a Vibe-Coded project. I'd rather call it AIssisted Engineering. And I think that is the only right way to use AI for code that matters.


