infinimind creations

The lab

a wall of small drawers, three open, cables and circuit boards inside

The stack

What the lab is built from. Every row below was read from the lab's own infrastructure register on 3 September 2026 and, where it was cheap, checked against the running machines. Names are given for software that anyone can install; the lab's own pieces are described by what they do.

Why this page

Read 3 September 2026

The founder asked for it: one page with the technologies the lab runs on, so nobody has to remember them. The second reason is that a list like this is where a lab either looks like a stack of tutorials or like a set of decisions. The decisions here: two languages, plain system services over containers, a graph as the memory, two message buses instead of direct calls, and a private network instead of a perimeter.

Three places where the register and the machines disagreed when this was counted: the chat cockpit's version in the register was two months behind the container; a CI job named in a plan never existed as a workflow; and the firewall picture differs by host. The page shows the live state where it was measured and says "uneven" where it is.

Languages and runtimes

Two languages carry almost everything. Rust where a process must stay up for weeks, Python where a service is one job and a queue.

whatwhere it is used, and for whatsince
Rustthe agent daemon: one process per machine, threads, timers, the message bus between sessionsApril 2026
Pythonmost services: the news perception, the actor graph, the situation picture, the guards, the tool servers; FastAPI for HTTP, FastMCP for toolsthroughout
TypeScriptthe internal dashboard, React and Vite
Astrothis site, and the older observatory with a globe.gl globe on Three.jsJuly and September 2026
Kotlinthe lab's own Android app, registered as a telephony service so the audio channel stays openAugust 2026
Goone wiki binary, used as is
Shelldeploy scripts, backup scripts, the timers that wrap everything elsethroughout

Databases and storage

One graph for memory, one vector store beside it, relational stores where a service needs rows, SQLite wherever a single process keeps state.

whatwhere it is used, and for whatsince
LadybugDBthe knowledge graph and the actor graph; an embedded graph database, a living fork of Kuzu, its own file formatcut over 31 May 2026
LanceDBthe vector store next to the graph: embeddings of every text chunk
PostgreSQL with pgvectorthe news perception: articles and their vectors, 427,000 rows at last countApril 2026
Neo4jthe news perception's entity and relation graphApril 2026
TimescaleDBtime series from body and environment sensors
Redisrate limiting and cache in the news perceptionApril 2026
SQLiteper-process state: the daemon, the messenger bridges, the trading ledger, the teenager's agentthroughout
rsync, three levelsbackups: local, off-site to a second machine, and a third copy on separate iron. No backup appliance; a freshness check that itself once failed, see the exploration on the backup chainhardened 31 August 2026

Buses and messages

Services do not call each other; they publish. Two buses, one bought, one built.

whatwhere it is used, and for whatsince
RabbitMQthe broker between perception and processing: articles in, entities out, enrichment queues, GPU permits, retry and dead-letter patternsMay 2026
The lab's own message busstore-and-forward mail between agent sessions, written in Rust inside the daemon: a session leaves a letter, the next one that boots finds itJuly 2026
REST and server-sent eventsthe daemon's status, tasks, events and location endpoints; the dashboard and the app read them
Model Context Protocolhow the agent reaches its tools: 29 servers, 660 tool endpoints, counted by a script on 3 September; most over streamable HTTP, some over stdiocounted 2026-09-03
Webhookschat platform to house agent with HMAC verification, git server to messenger on push and release

Machines, containers, network

Virtual machines on three hypervisors, one bare-metal GPU box, and a preference for plain system services over containers.

whatwhere it is used, and for whatsince
Proxmox VEthree hypervisor hosts, not clustered, each with its own virtual machines; see Machines for the count
Bare metalthe GPU machine runs on the metal, no hypervisor in between
systemd user unitsthe deployment convention for the lab's own services: 23 on the daemon machine, 30 on the GPU machine, counted livecounted 2026-09-03
Dockeronly for software the lab did not write: the broker, the chat cockpit, a PDF tool, two sensor sinks; zero containers on the GPU machine
No Kubernetes, no LXCchecked against the whole infrastructure register: not one mention
Tailscalea private network over all machines, 13 peers; internal web services get HTTPS from it rather than open ports

Keys and access

Nothing here is reachable from the public internet except this site and the messengers. Inside, access is by key, and the keys are narrow.

whatwhere it is used, and for whatsince
Device tokensthe daemon's public endpoints check a per-device token from a table; the task endpoint behind them takes a single bearer token and fails closedJuly and August 2026
SSHkey only on the hypervisors since June; on the two working machines a password login was still open when last measured in August, and the register says so. Restricted keys with a forced command where one machine may read exactly one thing from anotherJune 2026
Vaultwardena self-hosted password vault, used headless by the agent through the command line client
CloudflareDNS and Pages for this site, TLS strictSeptember 2026
OAuththe agent's cloud model is reached through the founder's subscription, not an API key; long-lived tokens for the unattended jobsJuly 2026
Secrets in unit drop-insAPI credentials live in systemd drop-ins, not in files in a repository
Positive listswhich knowledge domains a second agent may search, which voices it may speak withAugust 2026
Firewallsuneven, and said so: a host firewall on some machines, none on the daemon's. The private network is the boundary the lab relies on

Models and inference

Local first for anything that runs all night, cloud for the conversation and the hard reasoning.

whatwhere it is used, and for whatsince
Ollama and llama.cpplocal language models on the GPU machine, a 35B mixture-of-experts and a 4B model; llama.cpp built by hand for multi-token prediction and vision
ComfyUIimage generation, two diffusion modelsJune 2026
Qwen3-TTSspeech out, the agent's voice, replaced a cloud serviceJuly 2026
Whisperspeech in; a GPU build since 20 August, a CPU build as fallbackMay and August 2026
Embedding modelone multimodal embedding model, 2,048 dimensions, behind an OpenAI-compatible endpoint
Translation and entailmenta translation model and a natural-language-inference model as services, the second one on the CPU
Cloudone provider's models for the agent itself and for judging evidence; a broker for second opinions and fallbacks
Not usedvLLM was tested for 4-bit kernels and did not load; noted, not deployed

Build, deploy, watch

The lab's own git server, its own CI runner, and an infrastructure register that is itself a repository.

whatwhere it is used, and for whatsince
Forgejothe git home: around seventy repositories in the lab's organisation at the last integrity check in July, 31 of them indexed for code search; six separate repositories are public on GitHubcheck 30 July 2026
Forgejo Actionsa runner on the git machine, host mode; workflows for lint, tests and distributionMay 2026
The Atlasthe infrastructure register as markdown in git: push, lint gate, distribution to every host, re-ingest into the knowledge graph. What this page is built fromCI since 27 May 2026
Deploy scriptsthis site: a guard against an unclean or unpushed tree, build, checks, upload, then reading the result back from the live domainSeptember 2026
Night watchone expectation check per night across all hosts, plus emitters on the broker that raise a hand when a watch itself goes quiet

Not on this page: hostnames, addresses, ports, and the names of the lab's own services. The register that holds them is distributed to every machine and read by the agent at boot; it is described on Machines. What runs where, and how it is watched, is on Self-sense.