Skip to content

Repository files navigation

0xRIP

0xRIP explores two connected systems: a Three.js/WebGL world that can grow into an open spatial platform, and one Pi Agent whose understanding can keep evolving across visits.

The current scene is an impossible memorial inhabited by 12 bundled Role NPCs. Each Role maps one stable world identity to one src/role/*/SKILL.md, one Pi Agent context, and its own evolving memory. Conversation history, episodic memory, and versioned semantic memory persist locally; inference is selected through a provider-neutral Pi runtime.

Experimental project. An Agent is generated behavior shaped by supplied context and memory; it is not the represented person.

Run locally

Prerequisite: Bun.

bun install

Copy .env.example to .env and configure the text model:

PI_PROVIDER=minimax-cn
PI_MODEL=MiniMax-M2.7
PI_API_KEY=<provider-api-key>

The Pi runtime also recognizes the existing MiniMax Anthropic-compatible environment without copying the secret: ANTHROPIC_BASE_URL=https://api.minimaxi.com/anthropic plus ANTHROPIC_API_KEY. Explicit PI_* values take precedence.

Start the API and frontend in separate terminals:

bun run dev   # http://localhost:8000
bun run web   # http://localhost:5173

No global CLI or separate provider authentication command is required. The server creates .rip/ and the SQLite database automatically.

Run bun run check before submitting changes. Run bun run test:visual for WebGL changes and bun run test:persistence for storage/deployment changes.

Product core

1. A 3D world, not a dashboard

The visible application is one WebGL canvas. React Three Fiber composes the world, Agent NPCs, spatial selection, atmosphere, and a CanvasTexture command surface. The current authored memorial is the first world region; world traversal, regions, and spatial Agent activity are the next system layer.

The orthographic world camera is deliberately controllable: drag to rotate, use the wheel or a two-finger pinch to inspect local geometry, and press R or choose RESET VIEW to return to the authored view. Four isometric headings snap into ALIGN states where bridges and stairs form intentional screen-space connections; rotating away exposes their real depth separation. Polar angle and zoom are bounded so the monument remains readable rather than becoming an unconstrained orbit demo.

2. One continuously evolving Agent system

The server runs one Pi Agent architecture for every selected Role identity. It assembles that Role's bundled Skill, profile, recent conversation, episodic memory, and versioned semantic memory. The Agent can call evolve_memory to create or revise a durable understanding; reusing a semantic key increments its version instead of creating disconnected duplicates.

visitor -> Pi Agent -> response
             |  ^
             v  |
      evolving SQLite memory

3. Skills initialize Role NPCs

Every directory under src/role/ contains one bundled SKILL.md. Startup idempotently materializes those 12 definitions as durable NPCs; clicking one selects its stable ID, loads its Skill into the Pi system prompt, and opens its SSE terminal channel. Skills initialize behavior, while SQLite identity and memory preserve continuity independently of the selected model.

Current interaction

The first frame has no open dialog: only a quiet bottom shortcut remains over the world. Click an Agent to open its bottom terminal channel, or begin typing / to open the separate system console and discover commands.

When the terminal is closed, drag the world to rotate it and use the wheel or pinch gesture to zoom toward a detail. The HUD reports VIEW, ZOOM, and ALIGN/FREE. Opening the terminal locks the camera so ordinary TTY selection and scrolling never move the world behind it.

Command Action
/agents Show stable handles for Agents in the current world region
/talk @agent <topic> Let the linked Agent hold a bounded dialogue with one peer
/collab @agent <task> Let the linked Agent and one peer propose, critique, and synthesize
/bury Create a durable identity and NPC
/list Inspect durable world identities
/help, /clear Discover the command map or clear output
/quit Close the current channel

Legacy media and dream HTTP routes remain temporarily for wire compatibility, but no media provider is configured and valid generation requests return 503. They are not part of the current product core.

Direct conversation still has no slash-command shortcut: click a primary Agent in the world to open its bottom channel, then type a message. Once that spatial link exists, /talk can invite one peer into a bounded three-turn dialogue and /collab can run proposal, critique, and synthesis around one task. Both flows are user-started, stream through the same Pi runtime, can be interrupted with Ctrl+C, and do not create autonomous background Agents. /quit closes the channel and hides the panel again. Typing / while no channel is open reveals the system console but cannot start an Agent exchange.

Legacy /dream and /dreams parsing remains only for temporary wire compatibility; those commands are hidden from /help and completion because generated media is not part of the current product core.

The CanvasTexture console uses canonical TTY-style line editing rather than end-only text entry:

Keys Behavior
/ , Ctrl+B / Ctrl+F Move by character
Ctrl+← / Ctrl+→, Alt+B / Alt+F Move by word
Ctrl+A / Ctrl+E Move to line start/end
/ , Ctrl+P / Ctrl+N Traverse command history
Ctrl+R Reverse-search history
Ctrl+U / Ctrl+K, Ctrl+W / Alt+D Kill line or word ranges
Ctrl+Y Yank the last killed range
Ctrl+L Clear the visible terminal while keeping the channel
Ctrl+C / Ctrl+D Interrupt the active request / send EOF or logout
Tab, PageUp / PageDown Complete suggestions / scroll output

Each accepted key produces a short synthesized switch sound, a restrained WebGL panel recoil, a signal-line flash, and supported-device haptic feedback.

Architecture and deployment

The browser uses typed JSON, multipart, and SSE calls to a Bun API. The API owns SQLite, session Markdown, uploaded files, and the Pi Agent. Production starts the API directly with bun run start; Render persists RIP_DATA_DIR and RIP_DB_PATH under /var/data and reads the generic PI_* runtime variables.

See Current Architecture, Product Story, Roadmap, and Known Limitations. The documentation index identifies the owner of each document.

Licensed under Apache-2.0.

About

Segmentation fault: Life terminated

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages