Terminal-first social world inspired by Snow Crash. Walk the ring, chat by proximity, buy rooms, and ride the monorail. The MVP is a Rust WebSocket relay with a TUI client.
- A single authoritative relay server (no federation).
- An ASCII world: a ring-shaped street, rooms behind doors, and a fast monorail.
- A local-chat experience: talk to nearby players or whisper at close range.
- An economy prototype with mock XMR balances behind a wallet interface.
- Rust workspace with separate crates for
client,relay,protocol,world, and sharedcommontypes. - WebSocket relay that owns world state and persists data on the server.
- TUI client for rendering, input, and network messaging.
- Signed client actions using a persistent keypair (ed25519).
- Tor/SOCKS5 support (optional for dev).
- Start the relay:
cargo run -p street-relay -- --config config/relay.toml- Start the client:
cargo run -p street-client -- --config config/client.toml- Optional second local client:
cargo run -p street-client -- --config config/client2.toml- Relay config:
config/relay.toml - Client config:
config/client.toml - Client identity key:
config/identity.key(auto-generated on first run)
Running the client without --config will create config/client.toml and a new identity key using the default relay ws://89.125.209.155:9001.
For multiple local clients, each needs a unique identity_key_path. Use config/client2.toml as a template.
- Move: arrow keys or WASD
- Input: press
/for commands, Enter to type chat, Tab to cycle chat modes - Info: press
ito cycle info panels - Quit: Esc or Ctrl+Q
- Chat:
/say <msg>,/whisper <user> <msg> - Presence:
/who - Rooms:
/buy,/room_name <name>,/door_color <color>,/access <open|whitelist|blacklist> [user|pubkey...],/access show - Identity:
/claim_name <name> - Economy:
/pay <user> <amount>,/balance,/faucet [amount] - Monorail:
/board <north|east|south|west>,/depart <north|east|south|west> - Help:
/help,/exit
- The street is an infinite ASCII ring with doors every few columns.
- Rooms are separate maps with ownership and access controls.
- The monorail runs through the center of the street; stations are marked with
M. - Movement is grid-based with wall collisions.
- Relay is a WebSocket server; the client connects via
relay_url. - Tor/SOCKS5 can be enabled with
tor_enabled = trueandsocks5_proxy. - For LAN play, bind the relay to
0.0.0.0:9001and point clients at your IP.
crates/common: shared types, config, crypto helperscrates/protocol: message types, serialization, signature verificationcrates/world: map generation, physics, doorscrates/wallet: wallet trait and mock implementationcrates/relay: WebSocket server, authoritative state, persistencecrates/client: TUI, input handling, networking, rendering
- The wallet and XMR integration are mocked in the MVP.
- The relay never stores private keys.
- Protocol:
docs/PROTOCOL.md - Data model:
docs/DATA_MODEL.md - Workspace:
docs/WORKSPACE.md
