Show HN: Micasa – track your house from the terminal
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 --demoIf 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.
319 points by cpcloud - 99 comments
"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).
On top of it all, the most important thing to consider is intent -> An emergency plumbing visit is often very different than a proactive upgrade.
edit: spelling
There's also the inherit struggle of being everything for everyone with an app like this, and focusing on features 80% of your users want and leaving the other 20% niche features on the backlog upsets people, mostly the power users.
Anyways we document our reasoning here: https://homechart.app/docs/explanations/architecture/#separa...
Is that legal though? I'm guessing it the US it might be, given the amount of cameras of public places you can see in various communities, but wonder how common that is. Where I live (Spain) it's not legal to just stick a camera on your house and record public places, you need to put the camera in a way so you're only filming your private property or similar.
Not a legal expert just what I’ve heard.
Bricks are there (Home assistant, Frigate, Pihole,...)
So, yeah. This would obviously be called micarro.
Being able to launch it with:
Is super convenient.Actually we could go further and serve `micasa` via ssh:
Then we could put this in a nixosModule in your flake.nix. Would you be interested in a PR which does this?[0] https://github.com/gristlabs/grist-core
For example I am thinking, what if I wanted to hook up my micasa instance to some other arbitrary self-hosted service? If it's an App that means bespoke code, with a spreadsheet stack it is trivial.
It sucks, because it sounds like what I really need is for someone to track it for me so that i can just review it if needed.
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!
Did you hit this in the Docs open flow?
micasa will call xdg-open (linux)/open (mac)/cmd (windows) when opening a document, but there's nothing that's explicitly opening a text editor.
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.
It practice it alternates between annoying thing I dismiss the notifications from or use obsessively. Doesn't seem to be much in between
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.
Also I'm really chaotic in terms of schedule. My mood and behaviour changes by the day.
I use it more as a monitoring and control tool.
Not saying your way is bad, it's more as HA is intended. But I'm just saying it won't work for me.
Sometimes I daydream about a "solo mode" where the timings on lights are tighter and my music can follow me around the house when I'm up at night and nobody else is. But most times I'm trying to find the get-out-of-way averages that keep everyone happy.
Some things work great: Automated lights everywhere. Automated dimming of lights at night or sunset or whatever. Notifications when the laundry is done, or the cat litter is ready to be changed, or someone is at the door, or the garage door has been left open - all great. What music to play in what room at any time? Always changes. When to "dim all the lights" because Plex started a movie? But my son is building Legos in the dining room, and my wife is knitting and needs the couch light on. Sometimes I want it, but not every time.
For those things having a single button press is still a huge win over opening multiple apps and getting the right things set the right way for each participant.
[1]: https://github.com/home-assistant-ecosystem/home-assistant-c...
[2]: https://developers.home-assistant.io/docs/core/llm/
[3]: https://developers.home-assistant.io/docs/api/rest/
Dishwashers have filters??!?
More than you ever wanted to know about dishwashers: https://www.youtube.com/watch?v=_rBO8neWw04
If I am the only one who can use it and only from one computer, it would be entirely useless for my needs. I have several computers and also family members who would need access to that data. A Google Docs spreadsheet would be a better tool for my specific needs I think.
When you edit an ID column, it opens a form editor to edit the entire row at once.
The thinking was to make all columns editable _in some way_, but ID columns are autogenerated and thus not designed to be directly manipulated.
I thought: since the ID represents a unique entity, in this case document, then it made some sense to make editing that editing the whole row.
That said, this is a bug even with the explanation I just gave: editing on the ID column of Docs doesn't show all the row's data in the form. Will fix that shortly.
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.
Not entirely sure what you mean here, but the next big feature for micasa is an autopopulation pipeline. Upload a quote PDF and populate the project, quote, and vendor tables. It might not be viable ultimately, but I would love to see how far I can get.
Overkill? Definitely.
So I've been building a full piece of software to manage my small business. And it looks like traditional software (forms, tables, etc). But every single thing also has an MCP tool.
So then I find myself just talking to the agent especially as an input mechanism way more than clicking around and editing a form.
I'm just saying, as an input method, I think forms, TUIs, etc will be good as a backup. Over time, as you've outlined, we'd just say "here's a PDF, figure it out" and the agent just inputs the right values into the right fields.
That's how I've approached my run-my-business app. I have models/tables for clients, purchase orders, invoices, support tasks, everything. But my interaction is more like "Add me to all the active projects, set my cost rate to __" and it'll run 15 MCP calls and put the data where it belongs.
Or I'll ask "what invoices are way overdue?" and it'll run the MCP calls to get it, even though I have pretty dashboards.
Glad to see you're already thinking of it.
Almost certainly. I personally don't use clicky things to the extent that I am able to avoid them, so I can't describe the specific mechanism or name any of the nouns/tools involved, but I'm pretty sure this exists.
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.
mise use -g github:cpcloud/micasa
and just start typing. I wish it had metric units and was translated, though!
Not necessarily houses, but there are some old buildings around almost everywhere: https://en.wikipedia.org/wiki/List_of_oldest_extant_building...
A progressive web app could be a nice alternative: just add the website icon to your phone, and you can open it in seconds.
The app could be self-hosted on a home server, and solutions like Tailscale would let you easily access it outside the house as well. A big plus is that you can open it on all your devices and have a unified database across them.
With a web app, you could even keep the TUI aesthetic - just style it like a CLI interface.
I do things in my house too infrequently that I don't want to have to re-learn the UI of a tool again and again.
But maybe I'm not the target audience.
You might actually be able to get away with less structure and just dumps thoughts and ideas, statuses, and documents into $AI and have it generate ad-hoc reports.
In which case, a text file might be the right interface.
Kind of a non-answer, I realize.
I suppose the answer is: because I had a relatively specific idea of what I wanted to build and I didn't consider not building it.
I also personally wouldn’t trust the database of all my important home info to a vibe-coded program.
go run github.com/cpcloud/micasa/cmd/micasa@latest
The pairing of Claude and TUI doesn't seem like a coincidence to me, perhaps there are fewer moving parts that are easy to coordinate?
Great work.
Now I kind of want custom themes...
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?