Roblox/Luau AI orchestration system for codebase understanding and scoped edit generation
Project description
Rorchestra
AI-powered orchestration for Roblox/Luau codebases.
Rorchestra ingests your Rojo project, builds a dependency graph and hierarchical memory, then uses Gemini CLI agents to investigate context and generate scoped code edits from an interactive REPL.
Features
- Smart Investigation - Agent-driven context discovery that reads your dependency graph, identifies relevant scripts, and assembles focused context packets before making any edits
- Hierarchical Memory - Invalidation-driven summaries at script, domain, and project levels that stay fresh automatically when patches are applied
- Scoped Edits - Multi-file code generation with unified diffs, automatic patch application, and safety gates for high-risk changes
- MCP Integration - Connects to Roblox Studio MCP servers for live game state queries such as UI existence checks and property reads
- Token Tracking - Real-time visibility into Gemini API token usage per operation and across your session
- Plan and Review - Investigate first with
--plan, review the context packet, then execute when ready
Installation
pip install rorchestra
Or install from source:
git clone https://github.com/WutIsHummus/rorchestra.git
cd rorchestra
pip install -e ".[dev]"
Requirements
- Python 3.11+
- Rojo on PATH for project ingestion
- Gemini CLI on PATH for AI workers
- luau-lsp (optional, for static validation)
Quick Start
# Navigate to your Rojo project directory
cd path/to/your/rojo/project
# Launch the REPL
rorchestra
Rorchestra will automatically detect your default.project.json, ingest all scripts, build the dependency graph, generate memory summaries, and drop you into the interactive REPL.
Commands
| Command | Description |
|---|---|
/edit <desc> |
Agent-driven code edit with investigation |
/edit <desc> --plan |
Investigate and review before executing |
/edit <desc> --debug |
Show full internal context sent to the worker |
/ask <question> |
Ask questions about your codebase |
/status |
Show repo stats, scripts, domains, memory health |
/ingest <path> |
Ingest a Rojo project |
/summarize |
Re-summarize all scripts |
/plans |
List and manage saved investigation plans |
/tokens |
Show token usage for this session |
/mcp |
Check MCP server connection status |
/skills |
Load procedural skill memories |
/help |
Show all commands |
You can also type naturally without a / to ask questions about your codebase.
Architecture
orchestrator/
├── app/
│ ├── adapters/ Rojo, luau-lsp, Gemini CLI, MCP
│ ├── models/ SQLAlchemy entities and Pydantic schemas
│ ├── services/
│ │ ├── agents/ Investigation orchestrator and tool definitions
│ │ ├── ingest/ Rojo project scanner and graph builder
│ │ ├── memory/ Invalidation-driven memory system
│ │ ├── mcp/ MCP capability router (primary + fallback)
│ │ ├── packets/ Context packet assembler with token budgets
│ │ ├── summarization/ Parallel script and domain summarizer
│ │ └── workers/ Edit worker lifecycle and patch application
│ ├── policies/ Safety gates and MCP trigger policy
│ ├── telemetry/ JSONL event logging and metrics
│ └── storage/ SQLite ORM and file artifact store
How It Works
- Ingest - Scans your Rojo project tree, extracts all Luau scripts, and builds a
require()dependency graph. - Summarize - Generates concise AI summaries for every script and domain, stored as invalidation-driven memory records.
- Investigate - When you request an edit, agents explore the dependency graph to find all relevant scripts, identify invariants and risks.
- Edit - A focused context packet within the token budget is sent to a Gemini CLI worker that generates a unified diff.
- Apply - The diff is applied to your source files and affected memory records are invalidated for re-summarization.
Configuration
All settings can be overridden via environment variables with the ORCH_ prefix:
| Variable | Default | Description |
|---|---|---|
ORCH_GEMINI_CLI_BIN |
gemini |
Path to Gemini CLI |
ORCH_ROJO_BIN |
rojo |
Path to Rojo binary |
ORCH_ROBLOX_STUDIO_MCP_EXE |
(empty) | Path to official Roblox Studio MCP |
ORCH_COMMUNITY_MCP_ENTRYPOINT |
npx -y robloxstudio-mcp@latest |
Community MCP command |
ORCH_DEFAULT_TOKEN_BUDGET |
64000 |
Token budget for context packets |
ORCH_WORKER_TIMEOUT_SECS |
300 |
Timeout for worker invocations |
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rorchestra-1.0.0.tar.gz.
File metadata
- Download URL: rorchestra-1.0.0.tar.gz
- Upload date:
- Size: 87.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
124e5ca53e6ec763a570e9a2b50379d896d18691a226b791aba332f6f44e68c3
|
|
| MD5 |
95e16842818f4793e7a1adc8a57882d8
|
|
| BLAKE2b-256 |
cd1e552e21e4e7a4448d9e275b6b00c526e4dbc5679137df1513cbe5d91cc857
|
Provenance
The following attestation bundles were made for rorchestra-1.0.0.tar.gz:
Publisher:
publish.yml on WutIsHummus/Rorchestra
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rorchestra-1.0.0.tar.gz -
Subject digest:
124e5ca53e6ec763a570e9a2b50379d896d18691a226b791aba332f6f44e68c3 - Sigstore transparency entry: 1107598029
- Sigstore integration time:
-
Permalink:
WutIsHummus/Rorchestra@f32b4b000835e73e4bd94e58e2a4b5c292af809c -
Branch / Tag:
refs/tags/1.0.1 - Owner: https://github.com/WutIsHummus
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f32b4b000835e73e4bd94e58e2a4b5c292af809c -
Trigger Event:
release
-
Statement type:
File details
Details for the file rorchestra-1.0.0-py3-none-any.whl.
File metadata
- Download URL: rorchestra-1.0.0-py3-none-any.whl
- Upload date:
- Size: 101.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d2559832aad55150f414bc1eb1797ffc50323609f7d3e73d64704ecacf92a131
|
|
| MD5 |
8bc28995da222e16af552f78f32f5fca
|
|
| BLAKE2b-256 |
2bd69dc1b424289c4d5a707469cadd8d5d632bd7892940360685421b03fbe62c
|
Provenance
The following attestation bundles were made for rorchestra-1.0.0-py3-none-any.whl:
Publisher:
publish.yml on WutIsHummus/Rorchestra
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
rorchestra-1.0.0-py3-none-any.whl -
Subject digest:
d2559832aad55150f414bc1eb1797ffc50323609f7d3e73d64704ecacf92a131 - Sigstore transparency entry: 1107598043
- Sigstore integration time:
-
Permalink:
WutIsHummus/Rorchestra@f32b4b000835e73e4bd94e58e2a4b5c292af809c -
Branch / Tag:
refs/tags/1.0.1 - Owner: https://github.com/WutIsHummus
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f32b4b000835e73e4bd94e58e2a4b5c292af809c -
Trigger Event:
release
-
Statement type: