The REPL client

The REPL is a compact terminal client: a scrolling log of output above a single command line you type into. It is lighter than the panel-based Textual TUI but built on the same toolkit, so it gets rich text, clickable targets, and good keyboard/accessibility support.

Like the TUI it can host a world in this process with no network port or drive a running server over HTTP through the web controller. The header keeps a live status line: who you are playing, the connection, your action/focus points, and the world clock.

Launch

The REPL needs the repl extra (uv sync --extra repl). Host a local world:

uv run -m bunnyland.repl            # or: bunnyland-repl

Connect to a running server:

bunnyland-repl --server http://localhost:8765

List the demo worlds and generators you can pass to --generator:

bunnyland-repl --list-generators

Useful options mirror the TUI: --seed, --generator, --claim-fallback, and --claim-timeout-minutes. It is a full-screen terminal app, so run it in a real terminal, not through a pipe.

Pick a player

List the characters in the world, then take control of one:

> who
  Juniper
  Pib
> play Pib
You are now Pib.

Names resolve case-insensitively and by prefix (play Pi finds Pib), the same way the server resolves names you type in commands.

Two ways to give a command

Named commands use canonical command parameter=value syntax:

> move direction=north
> take item_id=a brass key
> say text=Hello, burrow.

Natural commands use the same concise phrasing the Discord and agent clients accept:

> go north
> take brass key
> say Hello, burrow.

Multi-word values are fine in both forms. Entity names are resolved against what your character can currently reach. If a name does not match, the REPL says so and suggests nearby names instead of submitting a doomed command.

Click a target

Characters, items, rooms, containers, and exits in the output are shown as highlighted links. Click one to drop its name into the command line at the cursor:

> take           (then click "a brass key" in the log)
> take a brass key

Tab completion

Press Tab to complete, in order:

When several completions are possible, the line fills in as far as they agree and the choices are listed in the log. help completes command names and play completes player names.

Live narration

The log surfaces things happening around you as they occur: speech, movement, and other activity your character can perceive in its current room. Room-scoped events from elsewhere are not shown. High-frequency bookkeeping is suppressed to keep the feed readable.

After your character moves through an exit, the REPL shows the destination-room summary so you can immediately decide what to do next.

If a --server connection drops, the failure is reported once and a reconnect is noted when it recovers, rather than repeating every second.

History

Up/Down walk previous commands, and history is saved to ~/.config/bunnyland/repl-history (honoring XDG_CONFIG_HOME) so it survives restarts.

Meta commands

CommandEffect
lookshow your current room, occupants, exits, and inventory
inventory (inv)show what you carry, grouped into worn, held, and carried
wholist the characters you can play
pointsshow your action/focus points
play <name>take control of a character
help [command]list commands, or show one command's parameters
refreshrefresh your view now
quit / exitleave; Ctrl-C also quits

Example session

> play Pib
You are now Pib.
> look
Parlor
  Pib (you)
  Marlow
  an apple
  exits: north -> Hallway
  carrying: a brass key
> take apple
> go north
> quit