How to Contribute to LoopX: A Complete Guide for Open-Source Contributors
To contribute to LoopX, select a task from the CONTRIBUTOR_TASKS.md board, respect public-private code boundaries, set up your environment with scripts/install-local.sh, make focused changes on a codex/ branch, and submit a PR that passes loopx check and the maintainer checklist.
LoopX is an open-source framework that coordinates autonomous agents, schedulers, and host adapters. Learning how to contribute to LoopX requires understanding its unique architecture—particularly the strict separation between public code and private runtime state. This guide walks you through the complete contribution workflow as implemented in huangruiteng/loopx.
Finding a Task to Work On
The recommended entry point is the contributor task board located at CONTRIBUTOR_TASKS.md in the repository root. This curated list contains public, claimable work items matched to various skill levels.
If no suitable task exists, open a new GitHub issue using the contributor task template referenced in CONTRIBUTING.md. Your issue must include:
- Problem description and intended scope
- Files you will modify
- Command you will use to validate the change
Wait for maintainer feedback before starting large or behavior-changing work.
Respecting Public-Private Boundaries
LoopX enforces strict boundaries to prevent accidental exposure of sensitive runtime data. Files in .loopx/, .codex/goals/, and ACTIVE_GOAL_STATE.md must never be committed.
According to CONTRIBUTING.md, you must not publish:
- Private benchmark traces
- Verifier output
- Raw session logs
- Credentials
- Internal document links
- Absolute local paths
Safe contribution surfaces include documentation, examples, smoke tests, CLI diagnostics, schema files, UI code, and sanitized fixtures.
Before submitting, run the built-in scan tool:
loopx check \
--scan-path README.md \
--scan-path CONTRIBUTING.md \
--scan-path CONTRIBUTOR_TASKS.md \
--scan-path docs/ \
--scan-path examples/
Setting Up Your Development Environment
The repository includes scripts/install-local.sh to automate environment setup:
git clone https://github.com/huangruiteng/loopx ~/loopx
~/loopx/scripts/install-local.sh
export PATH="$HOME/.local/bin:$PATH"
Verify your installation:
loopx doctor # sanity-check the environment
loopx demo # run a quick demonstration
For comprehensive validation, run the full quality suite:
python -m pip install -e ".[test]"
python -m ruff check tests loopx/...
python -m mypy
python -m pytest -q
loopx canary premerge --from-git-diff
Making a Focused Change
Follow this workflow when contributing to LoopX:
- Comment on the issue to announce you are beginning work
- Create a clean worktree on a dedicated
codex/<task-id>branch as required byAGENTS.md - Implement in small increments
Key source locations for core contributions:
| File | Purpose |
|---|---|
loopx/worker_bridge.py |
Core bridge between LoopX runtime and external workers |
loopx/visible_multi_agent_launcher.py |
Launcher for multi-agent simulations |
loopx/upgrade.py |
Upgrade-path logic for runtime versions |
loopx/status.py |
Status-server implementation |
examples/*.py |
Smoke-test and usage examples (safe to extend) |
- Add or update tests using existing smoke tests as templates. Never embed raw prompts, credentials, or private session data in fixtures.
Submitting a Pull Request
Before opening a PR, satisfy the checklist from CONTRIBUTING.md:
- Link the related issue or task ID
- Summarize the behavior change and validation steps
- Keep the PR focused—avoid unrelated formatting or refactors
- Verify no private/runtime files are included (run
git diff --checkandloopx check)
Maintainers may request a smaller PR if concerns are mixed.
Complete Contribution Example
# 1️⃣ Clone and install
git clone https://github.com/huangruiteng/loopx ~/loopx
~/loopx/scripts/install-local.sh
# 2️⃣ Pick a task from CONTRIBUTOR_TASKS.md, then comment on the issue
# 3️⃣ Create a clean worktree for the change
git worktree add -b codex/12345 /tmp/codex-12345 main
# 4️⃣ Make a small edit (e.g., improve a docstring)
sed -i 's/old text/new text/' loopx/worker_bridge.py
# 5️⃣ Run local checks
loopx check --scan-path loopx/
ruff check loopx/
pytest -q
# 6️⃣ Commit and push
git add loopx/worker_bridge.py
git commit -m "docs: clarify worker bridge contract (ref #12345)"
git push -u origin codex/12345
# 7️⃣ Open a PR on GitHub linking the issue
Summary
- Find work in
CONTRIBUTOR_TASKS.mdor propose via issue template - Respect boundaries—never commit
.loopx/, credentials, or session logs; useloopx checkfor verification - Set up locally with
scripts/install-local.shand validate withloopx doctor - Work cleanly on
codex/branches with focused, test-backed changes - Submit properly with linked issues, clear summaries, and passing checks
Frequently Asked Questions
What files are considered private and cannot be committed?
Private files include everything under .loopx/, .codex/goals/, and ACTIVE_GOAL_STATE.md, plus any benchmark traces, verifier output, raw session logs, credentials, internal document links, or absolute local paths. The loopx check command scans for these automatically.
How do I validate my changes before submitting a PR?
Run loopx doctor for environment health, loopx check to detect private artifacts, ruff check for linting, mypy for type checking, and pytest -q for tests. The loopx canary premerge --from-git-diff command provides final pre-submission validation.
Can I contribute if no tasks match my skills on the public board?
Yes. Open a new issue using the contributor task template from CONTRIBUTING.md, describing your proposed change, target files, and validation approach. Wait for maintainer approval before starting substantial work.
What branch naming convention does LoopX require?
LoopX requires codex/<task-id> branches created via git worktree add as documented in AGENTS.md. This maintains PR hygiene and separates active worktrees from your main checkout.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →