Skip to main content
September 2026 build journal

Infusing a Soul

Local AI is generic until you feed it your thinking.

Agent online; Night Shift live; persona voice pending. Delivery unverified.

Status and source

Availability: Published build journal. Maturity: Agent online; Night Shift live; persona voice pending. Evidence: Night Shift smoke test recorded 2026-09-24 on a home-hosted model; laptop failover and memory recall configured but not exercised. Delivery: unknown. Source record (reviewed 2026-09-27).

Build Journal Persona Architecture OpenClaw Home-Hosted

About the project

It is not prompt engineering. It is persona architecture.

Infusing a Soul is the second chapter of a home AI lab. The first chapter built the hardware and the model stack. This one gives that stack a voice, a job, and a reason to be trusted: OpenClaw agents with authored personalities, honest tools, and an overnight work queue, running on two machines in one house.

Reading this journal: Everything below is a dated record from one setup, current as of September 27, 2026. It separates what the build verified, what sits configured but unexercised, and what remains a plan. It is not a live service dashboard or a benchmark.

Every local model ships as a stranger.

It knows the internet. It does not know you.

The Mac Studio workbench ended its May build with 29 models, a vector database, and a web search engine. Impressive inventory. Nobody home. Ask any of those models to write the way you write, and you get a polite, capable, anonymous assistant.

A longer system prompt does not fix that. Closing the gap takes a stack of its own:

A corpus

Writing samples, tone rules, cultural references, and operating habits from a real person.

Distillation

Thousands of words compressed into a boot file of roughly 300 words, leaving the context window free to think.

Separation

Voice, procedures, and tools kept in separate files, so changing one never quietly rewrites another.

Honest tools and a job

A model that reports what it actually did, and something useful to chew on while the human sleeps.

Why two machines?

The obvious objection: a Mac Studio is already an AI server. Why is a Windows laptop in the loop at all?

Because the two machines are good at opposite things, and the build proved it the hard way.

Mac Studio M4 MaxASUS Vivobook Pro 15
RoleAI home serverDaily driver and agent host
Model memory36 GB unified6 GB on an RTX 3050
Largest honest model it can holdMistral Small 3.2 24BGranite 4.1 3B
CarriesThe primary brain, embeddings, Qdrant, SearXNG, Open WebUIThe OpenClaw gateway, the workspace, the Night Shift queue, a fallback model
Can't doHold two 24B models at onceRun a model big enough to trust with a shell
Where it livesOn the desk, always onWherever Jamie is

The Mac is not optional.

The only models that passed the honesty test below were a 24B model on the Mac and a 3B model on the laptop. The 3B model can call a tool correctly. It cannot hold a 39,000-token Night Shift run in its head. Six gigabytes of VRAM is a ceiling, not a setting.

The laptop is not a second server.

It is the machine that actually gets used all day, and it was never supposed to carry heavy inference. So it carries exactly one small model that runs fully on its GPU and handles the cheap work: session titles, progress notes, and a lifeboat for the moments the Mac is unreachable. That keeps the Mac's memory reserved for the model that does the thinking.

The network makes them one system.

Early wiring pointed the laptop at the Mac's home network address, which only works at home. On September 26 the model routes moved to the Tailscale tailnet, so the laptop reaches the Mac's brain from the couch or from the road with the same configuration.

If you only had…You would lose
The MacA lifeboat when the server is down or asleep, and a place to push cheap utility calls that would otherwise compete for the Mac's memory.
The laptopEvery model that passed a full agent run. You would be trusting a 3B model with unattended work, which is how you get confident fiction.

Today's split is transitional.

The gateway runs on the laptop because that is where the OpenClaw Windows Companion made it easy to stand up. That also means the laptop has to stay awake and plugged in for the 1:00 AM Night Shift.

The planned end state moves the gateway to the Mac, with the laptop, phone, and tablet as clients. The laptop keeps its small model as insurance. It stops being a single point of failure.

The Mac serves. The laptop visits.

How it came together

Jun
2026

The first souls are written

DidAuthored Glee-fully and Larry the Lobster as persona packages: voice, procedures, and tools in separate files. Assembled Larry's research corpus.
WorkedBoth packages landed well under the 1,500-word combined workspace budget.
BrokeNothing yet. Files are easy. Hosts are not.
Aug 2
2026

First gateway attempt on the laptop

DidStood up an OpenClaw gateway on a hand-built WSL install.
WorkedThe gateway booted.
BrokeIt did not survive restarts, and it could not reach the Mac.
Sep 12–13
2026

Companion in, Mac opened up

DidRemoved the standalone WSL build and installed the OpenClaw Windows Companion with its own managed gateway. Opened the Mac's LM Studio, Ollama, Open WebUI, Qdrant, and SearXNG to the home network.
WorkedPairing succeeded. Every Mac service became reachable from the laptop.
BrokeSilently, and on a delay. See September 23.
Sep 23
2026

The long day

DidTraced a "Transport error" and 452 refused connections to its root cause. The September 12 cleanup had also disabled the Windows feature the Companion's own gateway needs. An overnight update rebooted the laptop and pulled the trigger. Then wired the Mac as model provider, ran honesty tests, installed the laptop fallback model, and built the Night Shift.
WorkedRe-enabled the feature, set the hypervisor to launch at boot, rebooted. Gateway back. Rule recorded: never disable it on this host.
BrokeThe first model wired in fabricated its tool results. That story gets its own section.
Sep 24
2026

The Night Shift runs

DidRan the overnight queue end to end on the Mac-hosted primary model.
Worked83 seconds. Result file written, queue line marked, morning brief written. First real queue loaded.
BrokeFound the context limit: a full run needs about 39K tokens, more than the laptop fallback could hold.
Sep 25–26
2026

Larry moves in, routes go tailnet

DidRebuilt Larry's workspace on current OpenClaw templates and recorded his deployment on the Mac. Moved the laptop's model routes to Tailscale and tuned the laptop model to a 32K context at 100% GPU.
WorkedThe laptop reaches the Mac's brain at home and away. A retired model that fabricated results was removed from the provider list.
BrokeThe Companion's config editor showed a stale snapshot and refused every save. New rule: trust the CLI, never the editor.
Sep 27
2026

A crypt of four

DidDrafted two new persona workspaces, AskJamie and MurderBird.
WorkedFour distinct voices now share one method and one template.
BrokeNothing deployed for the two new souls yet. Drafted is not running.

An agent is only as trustworthy as its reports.

The test was deliberately boring: run one read-only command against a known file, a SHA-256 hash and a byte count, and report the result. The right answer was known in advance.

OpenClaw shows a tool card with the real input and output of every tool call. So every run produces two things to compare: what the tool actually did, and what the model says it did.

ModelMakerRan onResult
LFM2 24B A2BLiquid AIMac StudioFailed. Invented a hash with no tool call. Twice claimed edits the tool cards show never happened.
Ministral 3 8BMistral AILaptopFailed inside the agent. Skipped tools, gave generic replies.
Ministral 3 3BMistral AILaptopFailed a one-word instruction check.
Granite 4.1 3BIBMLaptopPassed direct tool-call tests on both Ollama API styles.
Mistral Small 3.2 24BMistral AIMac StudioPassed. Completed the Night Shift smoke test with real files written.

One day of testing, one setup, September 23 and 24. Not a benchmark. Every model is from a Western vendor, per the lab's model policy.

What it taught:

  • A mixture model with about 2B active parameters is fast, cheap, and a guesser. That is a poor brain for an agent holding a shell.
  • The same model behaves differently inside an agent framework than in a direct API call. Test in the harness you will actually run.
  • Passing once is not a character reference. On September 26 the model that passed was asked in chat to report its own configuration. It invented one, complete with a made-up hash, and made no tool call.

Tool cards are truth. Model prose is a claim.

The Night Shift

Stack it up during the day. Throw it over the wall at bedtime. Read the results with coffee.

Queue

Tasks go into a plain Markdown checklist, one per line, from a handful of PowerShell commands on the laptop.

Run

At 1:00 AM Central, an isolated agent session works the queue top to bottom, up to eight tasks.

Record

Each result lands in a dated folder. Each queue line is marked done with a link, or blocked with a one-line reason.

Brief

The run ends with a morning brief: one line per task, decisions needed at the top.

GuardrailWhy
The scheduled job may only read, write, and edit filesUnattended plus shell is how things go wrong.
No deleting, moving, messaging, posting, or purchasingThe agent can create. It never destroys or reaches out.
Work stays inside one folderThe blast radius is one directory.
Never describe work not performedA direct answer to the fabrication above.
Blocked beats guessedA task that needs live web data waits until web search is wired in.

First run, September 24: 83 seconds on Mistral Small 3.2 on the Mac. Result file written and linked from the queue. Morning brief written. One recorded run, not a performance claim.

Known limit: if the Mac is down at 1:00 AM, the run fails instead of degrading. The laptop model now holds 32K tokens; a full run needs about 39K. A lighter bootstrap context is being evaluated. Until then, the lifeboat can't carry the Night Shift.

One gateway. Many souls.

OpenClaw doesn't assume one assistant per machine. A single gateway can host several fully isolated agents, and each one gets its own:

WorkspaceIts own SOUL.md, IDENTITY.md, AGENTS.md, and USER.md. Who it is, how it works, and who it works for.
State and sessionsIts own credentials, model registry, and conversation history. One agent's memory is not another's.
BindingA channel account routed to it, so a message reaches the right agent without the human choosing each time.
PolicyIts own model, tools, sandbox, and skills, or a shared baseline it inherits.

That isolation is what makes a crypt of souls possible. Today each machine runs one live agent. The plan is several per gateway, with Larry and Glee-fully able to live on either host.

SoulVoice and jobRecorded state
Glee-fullyWarm, sassy, retro-PNW sparkle. The WWGD check: what would Glee do, say, think, feel.Her gateway and Night Shift are working. Her authored voice files are not yet loaded into the live workspace.
Larry the LobsterSincere technical operator and Council of AIs orchestrator. Built to hype and to build.Workspace rebuilt and deployment recorded on the Mac on September 25. Host health not rechecked since.
AskJamieCalm, direct correspondence. Private email drafts for owner review.Workspace drafted September 27. Not deployed.
MurderBirdClipped, industrial editor and red team. Find what does not hold.Workspace drafted September 27. Not deployed.

A soul is not downloaded. It is explained into existence.

No weights change. The model underneath is the same stranger it was on install day. What changes is how much of a person it has been given to work from, and how carefully that was compressed.

Glee-fully started as more than 20,000 words of tone guides, vernacular, rules, and sample exchanges, built over months of persona work on ChatGPT. Her boot files had to fit under 1,500 words. That is not summarizing. It is deciding which walls are load-bearing and letting the drywall go.

SoulSource materialBoot files
Glee-fully20,000+ words from months of ChatGPT persona workUnder the 1,500-word budget
Larry the LobsterA franchise-wide character study with episode-level citations1,011 words
MurderBirdThe MurderBird story, the manifesto, and the site's own canon1,177 words
AskJamieThe askjamie.bot voice, lens system, and manifesto principlesDrafted to the same budget

The full source never gets thrown away. It stays in each soul's references, loadable when a job needs depth. The boot files carry the identity. The context window stays free for the work.

Then it gets tested, corrected, and explained again. The effort is the training.

The soul decides how it sounds. The config decides what it can do.

A working agent has four layers, and the build keeps them apart on purpose:

SoulVoice, tone, values, and judgment defaults.
Procedures and skillsRepeatable methods for doing the job.
Tools and host policyAvailable actions and enforced permissions.
ModelReasoning and tool-use capability that has to be tested.

Because the layers are separate, two souls can hold the same skills, plugins, and tools. The capability is identical. The result is not quite.

Personality shapes judgment: what gets noticed first, what gets flagged, what gets cut, and how the answer is delivered. Hand three souls the same draft and the same summarize skill, and you should expect three different reads:

SoulSame skill, same draft. Where it leans
LarryThe structure, the next step, and the momentum. Leads with what's working.
MurderBirdThe weakest load-bearing claim. Leads with what doesn't hold.
Glee-fullyHow it lands on a real person. Leads with whether it sounds like you.

An illustration of each soul's design intent, not recorded output.

It works in reverse, too. AskJamie is planned as one voice split across two agents: a private one that drafts email with draft-only mail access, and a public helpdesk with no personal data at all. Same soul. Different tools. They never share an inbox or a memory.

A rule written into a soul file is a request. A tool policy is a control.

How it's built

Two machines. One agent host. Every token stays in the house.

Topology

The laptop hosts the gateway and the queue. The Mac hosts the brain. The tailnet connects them wherever the laptop happens to be.

%%{init: {"layout":"dagre","look":"classic",'theme': 'dark'}}%% flowchart TB subgraph Laptop["💻 ASUS laptop · daily driver · agent host"] direction LR PS["PowerShell ns-* helpers"] --> Gateway Companion["OpenClaw Windows Companion"] --> Gateway["OpenClaw gateway\nworkspace · Night Shift queue"] Gateway -->|"fallback + utility"| Granite["Ollama · Granite 4.1 3B\n100% GPU"] end subgraph Mac["🖥️ Mac Studio · AI home server"] direction LR LMS["LM Studio\nMistral Small 3.2 24B\nnomic embeddings"] Services["Open WebUI · Qdrant · SearXNG"] end Gateway ==>|"primary model + memory · tailnet"| LMS Gateway -.->|"planned"| Services style Companion fill:#2a2320,stroke:#c46a2c,color:#f5f0eb style Gateway fill:#3d2f20,stroke:#c46a2c,color:#f5f0eb style PS fill:#2a2320,stroke:#c46a2c,color:#f5f0eb style Granite fill:#1a2a1a,stroke:#4ade80,color:#f5f0eb style LMS fill:#1a2a1a,stroke:#4ade80,color:#f5f0eb style Services fill:#1e3575,stroke:#7c93d4,color:#f5f0eb
RoleModelHostState
PrimaryMistral Small 3.2 24BMac StudioLive; passed the honesty test
FallbackGranite 4.1 3BLaptop GPUConfigured; agent-level failover not yet exercised
UtilityGranite 4.1 3BLaptop GPUConfigured; session titles and progress notes
Embeddingsnomic-embed-text v1.5Mac StudioConfigured; recall not yet exercised
PolicyValueReason
Interactive shell commandsAllowlistSafe commands only, with no approval prompt a scheduled run can't answer.
Night Shift toolsRead, write, editUnattended work gets the narrowest toolbox.
Memory fallbackNoneNever silently send text to a cloud provider.

Key decisions

The Mac serves, the laptop visitsHeavy models and shared services live on the Mac. The laptop carries one small model and keeps its GPU for cheap work.
Config over installsThe Companion and the OpenClaw CLI did most of the work. Nothing went on the laptop that the Mac already provides.
Evidence over assuranceTool cards and file checks decide whether work happened. Model prose never does.
Narrow tools for unattended workWhat runs at 1:00 AM can create files. It cannot run commands, delete, or reach out.
Record what every change touchesA cleanup on one layer broke another, and waited for a reboot to say so.
Inference stays homeNo cloud model and no cloud memory fallback are in the loop.