Thank you for your interest in contributing to LabOS! Whether it's a bug fix, new feature, documentation, or translation — every contribution matters.
感谢你对 LabOS 的关注!无论是修 bug、新功能、文档还是翻译,每一份贡献都很重要。
- Python 3.10+
- Git
# 1. Fork and clone
git clone https://github.com/<your-username>/LabOS.git
cd LabOS
# 2. Install dependencies
pip install fastapi uvicorn paramiko httpx
# 3. Run the server
python api_server.py
# 4. Open http://localhost:8000- Open Settings in the web UI
- Configure your LLM API endpoint (any OpenAI-compatible API works)
- (Optional) Configure SSH for remote experiment execution
LabOS/
├── api_server.py # FastAPI backend — all API endpoints and pipeline logic
├── index.html # Main HTML page (single-page app)
├── app.js # Frontend JavaScript — UI logic, API calls, SSE
├── style.css # All styles
├── LICENSE # AGPL-3.0
└── README.md
Key areas in api_server.py:
- Database schema:
init_db()— SQLite tables for projects, experiments, conversations, memories, etc. - Pipeline engine:
run_fars_pipeline()— the 4-stage research automation pipeline - Chat API:
/api/chat— streaming LLM chat with memory integration - Experiment runner:
ssh_execute(),ssh_execute_codex_streaming()— remote execution via SSH - Memory system:
store_memory(),retrieve_memories()— project knowledge persistence
- Browse open issues
- Look for
good first issuelabels — these are beginner-friendly - Look for
help wantedlabels — these are where we need the most help - Or propose your own idea by opening a new issue
# Create a feature branch
git checkout -b feature/your-feature-name
# Make your changes
# ...
# Test locally
python api_server.py
# Open http://localhost:8000 and verify your changes
# Commit with a clear message
git commit -m "Add: your feature description"
# Push and open a PR
git push origin feature/your-feature-name- Keep PRs focused — one feature or fix per PR
- Add a clear description of what changed and why
- Include screenshots for UI changes
- Test your changes locally before submitting
- The server auto-creates the SQLite database on first run
- Seed data (default configs, LLM profiles) is inserted in
seed_pipeline_configs()andseed_default_llm_profiles() - SSE streaming: use
StreamingResponsewithtext/event-streamcontent type - Error codes: use 4xx (not 5xx) — the proxy clamps 5xx to 422
- No build step required — edit and refresh
- API base URL uses
__PORT_8000__placeholder (replaced at deploy time) - For local development, the frontend connects directly to
localhost:8000 - SSE connections use
EventSourceAPI
- Define your Pydantic model in
api_server.py - Add your route with
@app.get/post/delete - Update the frontend in
app.jsto call it - Test with
curlfirst, then in the browser
By contributing to LabOS, you agree that your contributions will be licensed under the AGPL-3.0 License.
贡献代码即表示你同意你的贡献将以 AGPL-3.0 协议授权。
Open an issue — we're happy to help!
有任何问题,欢迎开 Issue 讨论。