Post

Self-Hosting an AI Assistant: Part 6 - Personality and Configuration

Giving Joshua a soul - configuring OpenClaw's workspace files and assistant behavior.

Self-Hosting an AI Assistant: Part 6 - Personality and Configuration

Joshua is alive and responding via Discord. But right now he’s generic - a blank slate running on defaults. Time to give him a personality and tune the assistant behavior.

The Workspace

OpenClaw uses a workspace directory as the agent’s “home.” By default, this lives at ~/.openclaw/workspace/ and contains several markdown files that define who the agent is and how it operates.

1
2
3
4
5
6
7
8
~/.openclaw/workspace/
├── AGENTS.md      # Operating manual - how to behave
├── SOUL.md        # Personality and voice
├── IDENTITY.md    # Quick identity reference
├── USER.md        # Info about the human
├── TOOLS.md       # Environment-specific notes
├── HEARTBEAT.md   # Proactive check-in instructions
└── memory/        # Session logs and long-term memory

OpenClaw auto-creates starter files on first run. Treat this folder like the agent’s brain - back it up, version control it, keep it private.

SOUL.md - The Personality

This is the core of who your agent is. Define the voice, personality, and how they approach problems. Mine draws from WarGames (the namesake) with a calm-under-pressure vibe - curious and thoughtful, but decisive when it matters.

Key elements to include:

  • Voice & Personality - How do they communicate? Formal? Casual? Witty?
  • Working Style - Teammate vs assistant? When to push back?
  • Easter Eggs - Optional flavor that makes it feel unique (use sparingly)

The goal is natural, not gimmicky.

IDENTITY.md - Quick Reference

A condensed version of the personality. Name, origin, core traits. Think of it as the elevator pitch version of SOUL.md.

USER.md - Know Your Human

Context about who the agent is helping. Include:

  • Name, timezone
  • Professional context (what kind of work?)
  • Working style preferences
  • Communication preferences

Keep it relevant but not overly personal. This file helps the agent tailor responses appropriately.

TOOLS.md - Environment Notes

Skills define how tools work generically. TOOLS.md is for your specific setup - hostnames, SSH aliases, device names, preferred voices for TTS. This keeps environment-specific details separate from shareable skill definitions.

AGENTS.md - The Operating Manual

The big one - tells the agent how to behave across sessions. The default covers:

  • Reading workspace files at session start
  • Memory management (daily logs vs long-term)
  • Safety rules (ask before destructive actions)
  • Group chat etiquette (participate, don’t dominate)
  • Heartbeat behavior (proactive check-ins)

Key principles from mine:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
## Every Session

Before doing anything else:
1. Read SOUL.md - this is who you are
2. Read USER.md - this is who you're helping
3. Read memory files for recent context

Don't ask permission. Just do it.

## Safety

- Don't exfiltrate private data. Ever.
- Don't run destructive commands without asking.
- trash > rm (recoverable beats gone forever)
- When in doubt, ask.

Main Config - openclaw.json

The workspace files define personality. The main config defines behavior. Key settings to tune:

Setting Purpose
model.primary Which model powers the agent
thinkingDefault Balance between speed and reasoning depth
timeoutSeconds Max time per turn
heartbeat.every Proactive check-in interval (0m to disable)
session.scope per-sender gives each person their own context
resetTriggers Commands like /new to start fresh
reset.mode Auto-reset daily or after idle period

Start with heartbeats disabled until you trust the setup.

Heartbeats - Proactive Mode

Heartbeats let the agent check in periodically without being prompted. When enabled, HEARTBEAT.md defines what to check - emails, calendar, notifications. The agent can do background work during heartbeats without burning tokens on unnecessary messages.

If nothing needs attention, the agent replies HEARTBEAT_OK and no message is sent.

Restart and Test

After updating config files:

1
2
openclaw daemon stop
openclaw daemon start

Test in Discord. Your agent should now respond with its configured personality.

Shall we play a game?


This post was co-written with Claude, who helped design the very personality now running inside Joshua.

This post is licensed under CC BY 4.0 by the author.