Posted by cpcloud 6 hours ago
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.
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).
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,...)
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?!)So, yeah. This would obviously be called micarro.
Here it an important th… |
Why?
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.
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;
};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...