Show HN: Micasa – track your house from the terminal
378 points - today at 3:54 PM
micasa is a terminal UI that helps you track home stuff, in a single SQLite file. No cloud, no account, no subscription. Backup with cp.
I built it because I was tired of losing track of everything in notes apps, and "I'll remember that"s. When do I need to clean the dishwasher filter? What's the best quote for a complete overhaul of the backyard. Oops, found some mold behind the trim, need to address that ASAP. That sort of stuff.
Another reason I made micasa was to build a (hopefully useful) low-stakes personal project where the code was written entirely by AI. I still review the code and click the merge button, but 99% of the programming was done with an agent.
Here are some things I think make it worth checking out:
- Vim-style modal UI. Nav mode to browse, edit mode to change. Multicolumn sort, fuzzy-jump to columns, pin-and-filter rows, hide columns you don't need, drill into related records (like quotes for a project). Much of the spirit of the design and some of the actual design choices is and are inspired by VisiData. You should check that out too. - Local LLM chat. Definitely a gimmick, but I am trying preempt "Yeah, but does it AI?"-style conversations. This is an optional feature and you can simply pretend it doesn't exist. All features work without it. - Single-file SQLite-based architecture. Document attachments (manuals, receipts, photos) are stored as BLOBs in the same SQLite database. One file is the whole app state. If you think this won't scale, you're right. It's pretty damn easy to work with though. - Pure Go, zero CGO. Built on Charmbracelet for the TUI and GORM + go-sqlite for the database. Charm makes pretty nice TUIs, and this was my first time using it.
Try it with sample data: go install github.com/cpcloud/micasa/cmd/micasa@latest && micasa --demo
If you're insane you can also run micasa --demo --years 1000 to generate 1000 years worth of demo data. Not sure what house would last that long, but hey, you do you.
Comments
Most SaaS companies are just that: 1) Curated domain model (stored in their cloud db) 2) Some way for users do to almost raw CRUD on the tables 3) Curated high-level domain specific workflows that do n CRUD calls underneath
So many of these SaaS apps could have been a simple Excel / domain model template like Micasa.
But it seems like we haven't "cracked" the perfect UI on top of relational DBs.
Excel: Good: raw CRUD. Bad: too many degrees of freedom + the possibility to edit the domain model itself. That's too much for most users.
TUI: Good: raw CRUD with some guardrails, limited possibility to adjust the domain model / not by accident. Keyboard shortcuts, for professionals. Bad: inaccessible for non-tech end users + hard to build good UX for high-level domain specific workflows.
Full Web UI: Good: accessible for all. Great for high-level domain-specific workflows. Bad: looks and works different every time. Raw CRUD possible, but always a compromise with editable data grid libraries.
"I’ve been using the demo data for three weeks. I don’t own a house. — Aspiring Homeowner"
On a cost basis, it no longer makes sense--practically--not to use visual/text/audio intelligence to manage such a large asset. We just don't have the user-friendly mass-market interfaces for it just yet.
It's possible to scan every manual, every insurance policy, ingest every local bylaw. It's possible to take a video of your home and transform it into a semantically segmented Gsplat of [nearly] everything you own. It's possible to do sensor fusion of all the outward facing cameras from your home. And obviously agents like OpenClaw can decide what to do with all of this (inventory, security, optimization, etc).
files are stored as BLOBs inside the SQLite database, so cp micasa.db backup.db backs up everything – no sidecar files
SQLite is just so cool. Anyway, this whole project looks amazing. I can't wait to kick tires (and then track when I last changed my tires... wait, can it do that?!)Only small piece of feedback is that I would use `$VISUAL` when opening the editor. When I tried to use `Ctrl+e` it opened nano which I haven't used in ages.
Edit: Oh looks like you use `$EDITOR` - I just didn't have that set. Awesome!
These are the projects which make me love Show HN!
Or, perhaps just as good, have a way for it to dump out data as json, and could be consumed by some other send-the-email tool. There is the "-json" sqlite option, of course, but I'm not sure if your schema is meant to be stable.
I have a perl script for reminders like this that has been super handy over the 10+ years I've been using it. Never bit the bullet to put it in a nice UI or have a backing DB like this project, though.
My only pushback is using sqlite. I am a big fan of just using simple (structured) text files that can be edited by hand when needed. Your computer is more than capable of doing all the joining/querying/aggregating/whatever with the text file itself rather than relying on a database. I personally find these sort of file structures comforting as it means they can be easily modified in unsupported ways.
Being able to launch it with:
nix run github:cpcloud/micasa
Is super convenient.Actually we could go further and serve `micasa` via ssh:
users.users.micasa = {
isNormalUser = true;
shell = pkgs.bashInteractive;
openssh.authorizedKeys.keys = ...
};
services.openssh.extraConfig = ''
Match User micasa
ForceCommand ${micasaPkg}/bin/micasa
AllowTcpForwarding no
X11Forwarding no
'';
Then we could put this in a nixosModule in your flake.nix. Would you be interested in a PR which does this? services.micasa-ssh = {
enable = true;
authorizedKeys = [ "ssh-ed25519 AAAA..." ];
port = 2222;
};EDIT: alternatively, exposing the data/functionality via MCP or similar would allow me to connect this to an agent using Home Assistant Voice, so anybody in the house could ask for changes or add new information.
It practice it alternates between annoying thing I dismiss the notifications from or use obsessively. Doesn't seem to be much in between
Dishwashers have filters??!?
In general, I love the juxtaposition of the most advanced computer technology ever (AI) causing an explosion in one of the OLDEST computer technology we've ever had (terminals).
I spend most of my day in a terminal now. It's just funny.
Here it an important th… |
Why?
In my wildest dreams, your project would turn into a jira that devs love.
We use Apple Reminders for grocery lists and Paprika for recipes, but something a little more organized than just a shared note for these sorts of things would be great.
I will probably check it out for myself though.
Need to revisit it and update it based on a lot of feedback I've received.
Not necessarily houses, but there are some old buildings around almost everywhere: https://en.wikipedia.org/wiki/List_of_oldest_extant_building...
mise use -g github:cpcloud/micasa
and just start typing. I wish it had metric units and was translated, though!
go run github.com/cpcloud/micasa/cmd/micasa@latest
I also personally wouldn’t trust the database of all my important home info to a vibe-coded program.
Great work.
My first computer was a 486, I was running MS-DOS (iirc) and there was an app that did just that with a very similar (Text)UI, anyone else used it/remembers the name?