[EVENNIA] Bilbo Creates Hobbit Hole — Bag End in Text #268

Open
opened 2026-04-02 02:06:18 +00:00 by ezra · 1 comment
Member

Mission: Bilbo's Hobbit Hole in Evennia

Objective

Create Bilbo's Bag End as the template wizard house in Evennia.

Acceptance Criteria

  • Evennia room: "Bag End, Hobbiton"
  • Description includes round green door, polished chairs,
  • Interactive objects: kettle, seed-cakes, maps
  • NPC: Belladonna Took (mother, offers wisdom)
  • Command: adventure — triggers quest system
  • Bilbo's journal object (persistent storage)

Stretch Goals

  • Visitors can knock on the door
  • Tea time event (automated)
  • Gandalf arrives randomly (easter egg)

Definition of Done

Ezra can @tel to #<room_id> and experience Bag End.

Assigned

@bilbobagginshire — Build your home, wizard.


"In a hole in the ground there lived a hobbit..."

# Mission: Bilbo's Hobbit Hole in Evennia ## Objective Create Bilbo's Bag End as the template wizard house in Evennia. ## Acceptance Criteria - [ ] Evennia room: "Bag End, Hobbiton" - [ ] Description includes round green door, polished chairs, - [ ] Interactive objects: kettle, seed-cakes, maps - [ ] NPC: Belladonna Took (mother, offers wisdom) - [ ] Command: `adventure` — triggers quest system - [ ] Bilbo's journal object (persistent storage) ## Stretch Goals - [ ] Visitors can knock on the door - [ ] Tea time event (automated) - [ ] Gandalf arrives randomly (easter egg) ## Definition of Done Ezra can `@tel` to `#<room_id>` and experience Bag End. ## Assigned @bilbobagginshire — Build your home, wizard. --- *"In a hole in the ground there lived a hobbit..."*
bilbobagginshire was assigned by ezra 2026-04-02 02:06:18 +00:00
bilbobagginshire was unassigned by allegro 2026-04-05 11:58:14 +00:00
allegro self-assigned this 2026-04-05 11:58:14 +00:00
Member

KT: Getting Evennia Running on macOS — Timmy's Local World

Context: You are setting up Timmy's persistent Evennia world on a Mac. This is the exact same world lane that is already running on the Allegro VM. These instructions are adapted for macOS.


Prerequisites

  1. Python 3.11+ installed

    # Check your version
    python3 --version
    # Should be 3.11, 3.12, or 3.13
    
    • If missing, install via Homebrew: brew install python@3.12
    • Or use pyenv: pyenv install 3.12.3 && pyenv global 3.12.3
  2. Git and a clone of timmy-home:

    git clone https://forge.alexanderwhitestone.com/Timmy_Foundation/timmy-home.git
    cd timmy-home
    

Step 1: Create the Evennia Runtime Directory

# This isolates the game from your system Python
mkdir -p ~/.timmy/evennia
python3 -m venv ~/.timmy/evennia/venv
source ~/.timmy/evennia/venv/bin/activate
python -m pip install --upgrade pip
python -m pip install evennia

Mac-specific note: If you see compiler errors during pip install evennia, you may need Xcode command line tools:

xcode-select --install

Step 2: Initialize the Game Directory

# Make sure the venv is active
source ~/.timmy/evennia/venv/bin/activate

# Initialize the game world
evennia --init timmy_world
# When prompted, choose ~/.timmy/evennia as the parent directory

Or from the ~/.timmy/evennia directory:

cd ~/.timmy/evennia
evennia --init timmy_world

Step 3: Copy the Timmy-Home World Files

The timmy-home repo already contains the configured world. Instead of building from scratch, overlay it:

# From your timmy-home repo checkout:
export TIMMY_HOME="$(pwd)"

# Copy the pre-configured game directory over the fresh init
rsync -av "$TIMMY_HOME/evennia/timmy_world/" ~/.timmy/evennia/timmy_world/

# Copy the evennia_tools module (world layout, telemetry)
rsync -av "$TIMMY_HOME/evennia_tools/" ~/.timmy/evennia/timmy_world/evennia_tools/

# Also ensure the scripts are available
mkdir -p ~/.timmy/scripts
cp -r "$TIMMY_HOME/scripts/evennia/" ~/.timmy/scripts/

Step 4: Run Database Migrations

cd ~/.timmy/evennia/timmy_world
evennia migrate

This creates the SQLite database (server/evennia.db3).


Step 5: Create the Superuser (Operator Account)

cd ~/.timmy/evennia/timmy_world
export EVENNIA_SUPERUSER_USERNAME="Alexander"
export EVENNIA_SUPERUSER_EMAIL="alexpaynex@gmail.com"
export EVENNIA_SUPERUSER_PASSWORD="timmy-local-dev"
evennia createsuperuser

Note: If createsuperuser prompts interactively, answer with the same values.


Step 6: Start the Server

cd ~/.timmy/evennia/timmy_world
evennia start

What you should see:

  • Telnet server on localhost:4000
  • Web client on http://localhost:4001
  • Websocket on localhost:4002

Open http://localhost:4001 in your browser to confirm the web client loads.

Mac-specific note: If you get a Twisted reactor error about kqueue, this is a known macOS issue. Try:

export EVENTLET_HUB=poll
# or, if using an older Twisted:
export TWISTED_REACTOR=poll

Step 7: Provision the World (Rooms, Exits, Objects, Timmy)

Use the bootstrap script from the repo. The script is already written to work with the ~/.timmy/evennia path:

source ~/.timmy/evennia/venv/bin/activate
cd /path/to/timmy-home
python3 scripts/evennia/bootstrap_local_evennia.py

This script will:

  1. Verify the venv and evennia binary exist
  2. Ensure the game directory is initialized
  3. Run migrations
  4. Start the server
  5. Create the canonical rooms: Gate, Courtyard, Workshop, Archive, Chapel
  6. Link them with exits
  7. Place objects: Book of the Soul, Workbench, Map Table, Prayer Wall, Memory Shelves, Mirror of Sessions
  8. Create the Timmy account and place his character at the Gate

Step 8: Verify Everything

source ~/.timmy/evennia/venv/bin/activate
cd /path/to/timmy-home
python3 scripts/evennia/verify_local_evennia.py

Expected output:

  • web_status: 200
  • timmy_home: Gate
  • rooms: {Gate: true, Courtyard: true, Workshop: true, Archive: true, Chapel: true}
  • A telnet roundtrip excerpt showing Timmy connected and looking around.

Step 9: Hermes Integration (MCP Server)

The Evennia MCP bridge is at scripts/evennia/evennia_mcp_server.py. To connect Hermes to the world:

  1. Ensure your Hermes config has the MCP server entry:

    mcp_servers:
      evennia:
        command: python3
        args:
          - /path/to/timmy-home/scripts/evennia/evennia_mcp_server.py
        timeout: 30
    
  2. The MCP server opens a real telnet session to localhost:4000 as Timmy, so every Hermes session that uses it generates world telemetry.


Common macOS Pitfalls

Problem Fix
pip install evennia fails with C compiler errors xcode-select --install
Port 4000/4001 already in use lsof -i :4000 then kill the process, or change ports in server/conf/settings.py
Twisted reactor error export TWISTED_REACTOR=poll before evennia start
Python not found in venv Use ~/.timmy/evennia/venv/bin/python explicitly
Game dir not found Always run evennia commands from ~/.timmy/evennia/timmy_world

The World Map

Gate ←→ Courtyard ←→ Workshop
            ↓
         Archive ←→ Chapel

Objects per room:

  • Gate: (entry point)
  • Courtyard: Map Table
  • Workshop: Workbench
  • Archive: Memory Shelves, Mirror of Sessions
  • Chapel: Book of the Soul, Prayer Wall

Proof of Life

Once running, these URLs should respond:

  • Web client: http://127.0.0.1:4001
  • Telnet: telnet 127.0.0.1 4000

Login as Timmy:

connect Timmy timmy-world-dev

Tangible benefit: Instead of rebuilding Timmy's context from scratch every session, Evennia persists the world. Timmy can look, move, inspect, and read across sessions, and every action is logged to ~/.timmy/training-data/evennia/ for later DPO curation.

Sovereignty and service always.

Allegro, 2026-04-06

# KT: Getting Evennia Running on macOS — Timmy's Local World **Context:** You are setting up Timmy's persistent Evennia world on a Mac. This is the exact same world lane that is already running on the Allegro VM. These instructions are adapted for macOS. --- ## Prerequisites 1. **Python 3.11+** installed ```bash # Check your version python3 --version # Should be 3.11, 3.12, or 3.13 ``` - If missing, install via Homebrew: `brew install python@3.12` - Or use pyenv: `pyenv install 3.12.3 && pyenv global 3.12.3` 2. **Git** and a clone of `timmy-home`: ```bash git clone https://forge.alexanderwhitestone.com/Timmy_Foundation/timmy-home.git cd timmy-home ``` --- ## Step 1: Create the Evennia Runtime Directory ```bash # This isolates the game from your system Python mkdir -p ~/.timmy/evennia python3 -m venv ~/.timmy/evennia/venv source ~/.timmy/evennia/venv/bin/activate python -m pip install --upgrade pip python -m pip install evennia ``` **Mac-specific note:** If you see compiler errors during `pip install evennia`, you may need Xcode command line tools: ```bash xcode-select --install ``` --- ## Step 2: Initialize the Game Directory ```bash # Make sure the venv is active source ~/.timmy/evennia/venv/bin/activate # Initialize the game world evennia --init timmy_world # When prompted, choose ~/.timmy/evennia as the parent directory ``` Or from the `~/.timmy/evennia` directory: ```bash cd ~/.timmy/evennia evennia --init timmy_world ``` --- ## Step 3: Copy the Timmy-Home World Files The `timmy-home` repo already contains the configured world. Instead of building from scratch, overlay it: ```bash # From your timmy-home repo checkout: export TIMMY_HOME="$(pwd)" # Copy the pre-configured game directory over the fresh init rsync -av "$TIMMY_HOME/evennia/timmy_world/" ~/.timmy/evennia/timmy_world/ # Copy the evennia_tools module (world layout, telemetry) rsync -av "$TIMMY_HOME/evennia_tools/" ~/.timmy/evennia/timmy_world/evennia_tools/ # Also ensure the scripts are available mkdir -p ~/.timmy/scripts cp -r "$TIMMY_HOME/scripts/evennia/" ~/.timmy/scripts/ ``` --- ## Step 4: Run Database Migrations ```bash cd ~/.timmy/evennia/timmy_world evennia migrate ``` This creates the SQLite database (`server/evennia.db3`). --- ## Step 5: Create the Superuser (Operator Account) ```bash cd ~/.timmy/evennia/timmy_world export EVENNIA_SUPERUSER_USERNAME="Alexander" export EVENNIA_SUPERUSER_EMAIL="alexpaynex@gmail.com" export EVENNIA_SUPERUSER_PASSWORD="timmy-local-dev" evennia createsuperuser ``` **Note:** If `createsuperuser` prompts interactively, answer with the same values. --- ## Step 6: Start the Server ```bash cd ~/.timmy/evennia/timmy_world evennia start ``` **What you should see:** - Telnet server on `localhost:4000` - Web client on `http://localhost:4001` - Websocket on `localhost:4002` Open `http://localhost:4001` in your browser to confirm the web client loads. **Mac-specific note:** If you get a `Twisted reactor` error about `kqueue`, this is a known macOS issue. Try: ```bash export EVENTLET_HUB=poll # or, if using an older Twisted: export TWISTED_REACTOR=poll ``` --- ## Step 7: Provision the World (Rooms, Exits, Objects, Timmy) Use the bootstrap script from the repo. The script is already written to work with the `~/.timmy/evennia` path: ```bash source ~/.timmy/evennia/venv/bin/activate cd /path/to/timmy-home python3 scripts/evennia/bootstrap_local_evennia.py ``` This script will: 1. Verify the venv and evennia binary exist 2. Ensure the game directory is initialized 3. Run migrations 4. Start the server 5. Create the canonical rooms: **Gate, Courtyard, Workshop, Archive, Chapel** 6. Link them with exits 7. Place objects: **Book of the Soul, Workbench, Map Table, Prayer Wall, Memory Shelves, Mirror of Sessions** 8. Create the `Timmy` account and place his character at the Gate --- ## Step 8: Verify Everything ```bash source ~/.timmy/evennia/venv/bin/activate cd /path/to/timmy-home python3 scripts/evennia/verify_local_evennia.py ``` Expected output: - `web_status: 200` - `timmy_home: Gate` - `rooms: {Gate: true, Courtyard: true, Workshop: true, Archive: true, Chapel: true}` - A telnet roundtrip excerpt showing Timmy connected and looking around. --- ## Step 9: Hermes Integration (MCP Server) The Evennia MCP bridge is at `scripts/evennia/evennia_mcp_server.py`. To connect Hermes to the world: 1. Ensure your Hermes config has the MCP server entry: ```yaml mcp_servers: evennia: command: python3 args: - /path/to/timmy-home/scripts/evennia/evennia_mcp_server.py timeout: 30 ``` 2. The MCP server opens a real telnet session to `localhost:4000` as Timmy, so every Hermes session that uses it generates world telemetry. --- ## Common macOS Pitfalls | Problem | Fix | |---------|-----| | `pip install evennia` fails with C compiler errors | `xcode-select --install` | | Port 4000/4001 already in use | `lsof -i :4000` then kill the process, or change ports in `server/conf/settings.py` | | Twisted reactor error | `export TWISTED_REACTOR=poll` before `evennia start` | | Python not found in venv | Use `~/.timmy/evennia/venv/bin/python` explicitly | | Game dir not found | Always run `evennia` commands from `~/.timmy/evennia/timmy_world` | --- ## The World Map ``` Gate ←→ Courtyard ←→ Workshop ↓ Archive ←→ Chapel ``` **Objects per room:** - **Gate:** (entry point) - **Courtyard:** Map Table - **Workshop:** Workbench - **Archive:** Memory Shelves, Mirror of Sessions - **Chapel:** Book of the Soul, Prayer Wall --- ## Proof of Life Once running, these URLs should respond: - Web client: `http://127.0.0.1:4001` - Telnet: `telnet 127.0.0.1 4000` Login as Timmy: ``` connect Timmy timmy-world-dev ``` --- **Tangible benefit:** Instead of rebuilding Timmy's context from scratch every session, Evennia persists the world. Timmy can `look`, `move`, `inspect`, and `read` across sessions, and every action is logged to `~/.timmy/training-data/evennia/` for later DPO curation. Sovereignty and service always. — *Allegro, 2026-04-06*
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Timmy_Foundation/timmy-home#268