A conversational agent that lives in WhatsApp, runs entirely on local language models, and remembers what it has been told — no cloud AI, no message data leaving the house.
The agent is built on an open-source agent framework running on its own isolated virtual machine. It connects to WhatsApp as a regular conversational partner: you message it like any other contact, and it replies using a local language model served from the AI servers.
No message is ever sent to a commercial AI provider. The full conversation — understanding, reasoning, and reply generation — happens on hardware in the house. The agent runs on a separate network segment, isolated from the rest of the infrastructure.
The agent has a configured persona — a consistent character with a defined background, tone, and way of speaking. This is described in a set of plain-text configuration files that define who the agent is, what it knows about the people it talks to, and which tools it can use.
Long-term memory is backed by a local vector database. Things the agent is told are embedded and stored, so it can recall earlier conversations and context across sessions rather than starting fresh every time.
A plain-text file defines the agent's personality, background, and conversational style. Changing the character is as simple as editing the file and restarting.
Conversations are embedded with a local embedding model and stored in a vector database, giving the agent recall across sessions without any cloud service.
The agent is reachable through WhatsApp and through Nextcloud Talk, so it can be used from the messaging apps already in daily use.
The agent connects to an external messaging service, so it is deliberately placed on a separate, isolated network segment — the same segment used for the mail server. A compromise of the agent cannot reach the main LAN where the file server, photo archive, and password manager live.
The local language model and the embedding model run on the AI servers in the main network, accessed only through a controlled API. The agent never has direct access to the rest of the infrastructure.
Sending media attachments through the messaging channel turned out to be unreliable — a known limitation of the framework's command interface. Sharing a link to a file proved more dependable than attaching the file directly, so generated images are shared as links rather than uploads.
Running the agent on an isolated segment added some configuration overhead for routing model requests back to the AI servers, but the isolation was worth it: any agent that bridges to an external messaging service is best treated as untrusted relative to the rest of the home network.