AI For My Family
My family uses Spacebot to supplement the main consumer AI apps. It feels polished, and it lets us control our data.
We run several instances, with coding making up <5% of its utility. Spacebot lets us easily create agents with personalities and specialties. Prior to finding it, we were using ChatGPT, Gemini or DeepSeek, and relying on their memory of our conversations to enhance the advice they give.
Spacebot advertises itself as an "AI Operating System for Teams". Its sweet spot is coding projects involving 3-30 permanent agents, and 100s of sub-agents. Its memory system is the best I've encountered: realistic and relevant, cost-effective, private.
The software is a paid open-source product, which we self-host on a $5/month VPS. I have zero affiliation with the founder or the project.
It took me ~30 minutes to set up, and I've spent weeks exploring. That experimentation cemented my agents into my daily and weekly rhythm.
I used to think of AI in terms of me as a revenue-generating employee in a corporation, with colleagues around me, above me (e.g., mentors and rabbis), and cost-center functions paid for by the firm, for reasons of specialization and efficiency1.
But more heroically, AI should place each member of our family as LeBron James, with a team of trainers, dietitians, physical therapists, video analysts, scouting reports, team managers to ensure luggage gets to hotel rooms, assistant coaches, head coaches, business managers, and relationships with current, retired and upcoming fellow athletes.
Most of the AI discourse focuses on coding agents. They are merely accelerants and force multipliers, allowing junior devs to produce output beyond their capabilities, and senior devs to manage a relatively cheap team of non-human junior devs. Some of the team come to the table with genius-level attributes, which can be applied to particular goals.
For us, the major unlock is personality-tuned agents with memory that simply works. We get thousands of dollars in value per month, and use it for services where the real-world options are expensive, inconvenient, or hard to find at any price.
As an example, we created a personal trainer/dietitian agent. In person, finding quality is expensive, and we have to navigate layers of social norms relating to scarcity rather than value exchange (e.g., scheduling). IRL I take personal agency to shop around, but access to quality is somewhat out of my control even if I am willing to pay market price. Meanwhile with agents, I can apply personal agency to discover how to tune and improve the services I consume.
The rest of this tutorial describes how I've set up our Spacebot instances. Where possible, the tutorial directs you to ask an LLM about common devops tasks.
tl;dr
create VPS $4/mo
create non-root users (2)
install tailscale, cloudflared, spacebot
set up spacebot
a. LLM providers (2, maybe 3)
b. agents setup (personalized)
c. messaging setup (optional)
d. safely expose to the interwebs
1. create VPS
I opened an account with Contabo. They offer a Europe-hosted VPS for $3.96/mo2. Currently, this gets you 2 cores, 4 GB RAM, 300 GB SSD, 200 Mbit/s, "Unlimited" Traffic.
For $4.32/mo, you can get 4 cores, 8 GB RAM, 75 GB NVMe or 150 GB SSD, 200 Mbit/s, "Unlimited Traffic".
Follow standard online resource purchasing flow.
Wait 30 seconds to 5 minutes for server provisioning.
Add default Contabo Firewall.
First time log in steps:
ssh root@[nnn.nnn.nnn.nnn]
apt update
apt upgrade
reboot
I don't have a Contabo refcode to share. Use OVH or Hetzner or Digital Ocean or Vultr for a mostly similar experience
2. create non-root users (2)
Ask an LLM "how to harden Ubuntu VPS".
Its instructions should include: "reducing the attack surface by creating a non-root user, disabling root SSH login, enforcing SSH keys, setting up UFW, and enabling automatic security updates."
Ask questions about any aspect, and try to implement Best Practices, while developing a reasonable understanding of the tradeoffs around any choices that are unclear.
I find it comforting to use two non-root users: a main one for general logins to the VPS (with sudo rights), and a spacebot user that has no root access whatsoever. YMMV3.
3. install tailscale, cloudflared, spacebot
Tailscale is a zero-configuration mesh VPN with a generous free plan. It lets you run a server so that it is NOT accessible to the general internet. Only other devices within your private tailnet can reach it.
Cloudflared creates an encrypted, outbound-only connector that proxies traffic through Cloudflare's network to your machine. This tunnel can have a subdomain on any existing DNS that you manage (for free) via Cloudflare. You must create policies for your subdomain, otherwise anyone who finds the subdomain can access your server.
You can use one or both. I use both, for resilience, but it doubles the attack surface.
you do not need Caddy, nginx, Traefik
Spacebot is a standalone Rust binary. I restart it manually each time the machine reboots. You can ask an LLM how to make this more automatic. A common approach is systemd.
You can download a pre-compiled executable, or build your own customized version4. The single binary creates its own vector databases, tabular databases, kv stores, and web interface.
Install chrome and opencode on the VPS for spacebot to use.
4. set up spacebot
Run ./spacebot and follow the CLI onboarding flow (and/or the web interface)
a. LLM providers (2, maybe 3)
I specify a private inference provider as default: Venice.ai via DIEM. Fireworks works perfectly as well. Agents dealing with less sensitive information can use cheaper inference providers. GLM Coding Plan is my favorite. Ollama Cloud and OpenCode Zen work perfectly as well.
I actually bootstrap the setup: everything gets wired up initially on GLM Coding Plan, then I swap to private. You can always go from public to private. It's not as good to go from private to public, as you can't control leakage via the history injected into the context.
I use two tiers of models: expensive for channel branch and worker, cheap for cortex and compactor.
You can continue to tweak these model routing distinctions. Back when LLM subscription plans were more heavily subsidized, it made no sense to invest in understanding model pricing nuances. My philosophy is to use defaults until pain points guide you to tweak things.
b. agents setup (personalized)
Spacebot has a useful wizard to create standard agent personas.
Depending on your LLM provider's intelligence (GLM 4.7 is plenty smart), you can ask it to tweak the personas even further, that make the interactions feel quite distinctive and personalized.
c. messaging setup (optional)
I use a private Discord server plus the web ui. Some people swear by Telegram and WhatsApp.
d. safely expose to the interwebs
Expose port 19898 via tailscale (your own tailnet) and Cloudflare (anyone you permission via CF Zero Trust).
a large company often pays for a door person to accept packages and check visitor's IDs, so other employees don't spend their time answering the door↩
pay $1.20~1.80 extra per month for US-location hosting, advertised 4-28ms latency. Where I am in the US, the EU-based advertised latency is 86ms. This quoted rate requires a 12-month term, paid upfront. Month-by-month is slightly higher↩
On your own setup, you might consider using only one non-root user. Having two is a defense-in-depth strategy dating back to when people did not let agents run free on their computers. An unfettered agent can probably trivially figure out how to get around this↩
after I got it working, I asked my LLM to plan the minimal amount of changes required to improve mobile UI/UX. Also, I asked it to add: a) a React frontend toggle element for a per-channel Voice-primary setting; b) a python script to call Pocket TTS with a per-agent custom voice, transform WAV to OGG, and send to a per-agent Discord channel with appropriate voice message metadata; c) Rust backend logic to identify if messages include links, tables, code fences, or structured data. Send all other messages as voice messages↩