πŸŽ‰ 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 .env setup, 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:

TypeExample
Featurefeat/model-selector-ui
Fixfix/invalid-token-error
Docsdocs/add-contributing-guide
Buildbuild/pyinstaller-hook
Refactorrefactor/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 feature
  • fix: bug fix
  • docs: documentation only
  • style: formatting (no code logic changes)
  • refactor: code refactoring
  • test: add or update tests
  • build: 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

  1. Push your feature branch:

    git push origin feat/your-feature
    
  2. 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
  3. 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:

πŸ“„ frontend/README_CN.md


🌐 API Documentation (Backend):

http://localhost:11636/api/swagger/doc


  • Use pre-commit for pre-commit formatting and checks:

    make pre-commit-install
    
  • Use Ruff + Mypy + Black with IDE integration


πŸ“„ License & 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.md via 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