π Thank You for Your Interest in Argo!
July 17, 2025 Β· View on GitHub
Argo is a modular AI Agent system that integrates components like LLM, multi-agent support, MCP tool protocol, and frontend-backend collaboration. We welcome all forms of contributions, including but not limited to:
- Bug fixes
- New feature development
- Performance optimization
- Documentation improvements
- Cross-platform support
- Deployment enhancements
π Project Structure Overview
Backend
Argo's backend is written in Python using the Tornado framework and uses SQLAlchemy as the ORM.
backend/ βββ alembic/ # Database migration scripts (Alembic) βββ configs/ # Configuration loading and initialization βββ core/ # Core modules for Agent / LLM / MCP βββ dist/ # Frontend build artifacts (output from frontend, used for backend static serving, can be ignored) βββ docker/ # Docker configs βββ events/ # Async event definitions and handlers βββ handlers/ # HTTP controllers (Tornado Handlers) βββ models/ # ORM data models (SQLAlchemy, etc.) βββ resources/ # Static resources βββ schemas/ # Request schema definitions and validation (Marshmallow Schema) βββ services/ # Core business logic (Service layer) βββ templates/ # swagger.json, HTML templates, etc. βββ tests/ # Unit tests βββ utils/ # Utility functions βββ main.py # Application entry point
Frontend
The frontend is built with Vite + React based on TypeScript.
frontend/ βββ public/ # Public assets βββ src/ # Source code β βββ assets/ # Static assets (images, SVGs, audio, etc.) β βββ components/ # Reusable UI components (buttons, inputs, modals, etc.) β βββ hooks/ # Custom React hooks (e.g. useFetch, useTheme) β βββ layout/ # Layout components (Header, Sidebar, Footer) β βββ lib/ # Shared libraries/clients (e.g. request library, 3rd-party wrappers) β βββ pages/ # Page components (each page is a module) β βββ routes/ # Route definitions (e.g. react-router-dom Route setup) β βββ types/ # Global TypeScript interfaces/types β βββ utils/ # Utility functions (date, formatting, validation, etc.) β βββ App.tsx # Root React component β βββ App.css # Styles for App component β βββ constants.tsx # App-wide constants β βββ index.css # Global styles β βββ main.tsx # App entry point, ReactDOM.createRoot mount point β βββ tailwind.css # Tailwind CSS entry configuration β βββ vite-env.d.ts # Vite environment variable type definitions βββ index.html # HTML entry template for Vite to inject build artifacts
π Before You Start
Please review:
- Existing Issues
- For new features, please start a discussion or create an issue to align direction before starting development
- For bug fixes, minor features, or documentation updates, you may open a PR directly
π Quick Start (Developers)
Refer to docs/DEV_GUIDE_CN.md for setting up the local development environment.
β Covers
.envsetup, frontend/backend build, dependency installation, service startup, and more.
π§βπ» Contribution Workflow
1. Fork & Clone
git clone https://github.com/<your-name>/argo.git
cd argo
git remote add upstream https://github.com/xark-argo/argo.git
2. Create a Feature Branch
Suggested naming format:
git checkout -b feat/agent-mem-optimization
Recommended branch types:
| Type | Example |
|---|---|
| Feature | feat/model-selector-ui |
| Fix | fix/invalid-token-error |
| Docs | docs/add-contributing-guide |
| Build | build/pyinstaller-hook |
| Refactor | refactor/database-layer |
π¦ Commit Message Convention (Use Conventional Commits)
Example format:
feat(agent): support multi-agent state isolation
fix(api): fix incorrect API response
docs(readme): add local dev setup instructions
Common types:
feat: new featurefix: bug fixdocs: documentation onlystyle: formatting (no code logic changes)refactor: code refactoringtest: add or update testsbuild: build-related changes (Docker, CI, PyInstaller, etc.)chore: miscellaneous changes (e.g., dependency upgrades)
β Pre-commit Checklist
Before submitting a PR, please ensure youβve run:
make format # Code formatting
make lint # Mypy + Ruff + basic test checks
make build-web # If frontend code is changed
π PR Submission Process
-
Push your feature branch:
git push origin feat/your-feature -
Create a Pull Request, and ensure it includes:
- β Clear title and description of changes
- β Whether it introduces breaking changes
- β Whether it affects UI or model compatibility
- β If itβs UI-related, provide screenshots or demo
-
Wait for Maintainers to review and discuss β
π§ͺ Unit Testing Guide
The backend uses pytest + coverage, with tests located in backend/tests/.
Run tests:
make test
Generate coverage report:
assets/coverage/htmlcov/index.html
π¦ How to Add a New Model Provider?
See the dedicated guide:
π core/model_providers/README.md
π¦ LangGraph DeepResearch Custom Development
Please refer to the detailed documentation:
π core/agent/langgraph_agent/README.md
π οΈ How to Package with PyInstaller?
Please refer to the packaging guide:
π deploy/pyinstaller/README.md
π¨ How to Customize the Frontend?
Frontend developer guide:
π API Documentation (Backend):
http://localhost:11636/api/swagger/doc
π§© Recommended Tools
-
Use
pre-commitfor pre-commit formatting and checks:make pre-commit-install -
Use Ruff + Mypy + Black with IDE integration
π License & Code of Conduct
- Please read LICENSE
- All contributors should follow our Code of Conduct
π¬ Get Help
- Submit issues: GitHub Issues
- For quick discussions: Join our Discord / dev group
- Feedback on this guide? Feel free to update
CONTRIBUTING.mdvia PR π
β€οΈ Thank You for Your Support!
Every contribution helps push Argo forward.
You're welcome to submit PRs, Issues, or join the community to help build a more powerful AI Agent system together!
β The Argo Dev Team