AI · Agent

A local AI
with a personality.

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.


Concept

Chat with a home server
like it's a contact.

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.


Personality & Memory

A defined character
that remembers.

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.

// PERSONA

Character definition

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.

Plain-text config Editable
// MEMORY

Vector recall

Conversations are embedded with a local embedding model and stored in a vector database, giving the agent recall across sessions without any cloud service.

Local embeddings Vector database
// CHANNEL

WhatsApp + Talk

The agent is reachable through WhatsApp and through Nextcloud Talk, so it can be used from the messaging apps already in daily use.

WhatsApp Nextcloud Talk

Isolation

On its own segment,
by design.

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.

Isolated segment No LAN access Local models only

Lessons

What we learned
building it.

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.