Thank you for your interest in contributing! This guide will get you up and running quickly.
- Getting Started
- Project Structure
- Branch Strategy
- Making Changes
- Running Tests
- Code Style
- Submitting a PR
- Environment Variables
- Python 3.11+
pip- Git
- Docker (optional but recommended)
# 1. Clone the repo
git clone https://github.com/Harshit-ops-code/ET-multiple-agent.git
cd ET-multiple-agent
# 2. Create and activate a virtual environment
python -m venv venv
source venv/bin/activate # Mac/Linux
venv\Scripts\activate # Windows
# 3. Install dependencies
pip install -r requirements.txt
# 4. Set up environment variables
cp .env.example .env
# Fill in your API keys in .env
# 5. Start the server
uvicorn api_server:app --reloadThe static frontend is served at http://localhost:8000/app once the server is running.
| Folder | Purpose |
|---|---|
agents/ |
LangChain-powered pipeline agents (writer, reviewer, etc.) |
graph/ |
LangGraph workflow state machine |
frontend/ |
Modular SPA — HTML shell + JS controllers + CSS modules |
prompts/ |
LLM prompt templates |
rag/ |
Retrieval-Augmented Generation and ChromaDB config |
tests/ |
Pytest unit tests |
engine/ |
C++ parallel translation microservice |
| Branch | Purpose |
|---|---|
main |
Stable, deployable code only |
dev |
Integration branch for features |
fix/... |
Bug fixes (e.g. fix/cors-issue) |
feat/... |
New features (e.g. feat/twitter-agent) |
chore/... |
Config, deps, tooling changes |
Important
Never push directly to main. Always open a Pull Request.
# Always branch off main
git checkout main
git pull origin main
git checkout -b feat/your-feature-name
# Make your changes, then stage and commit
git add .
git commit -m "feat: describe what you did"
# Push your branch
git push origin feat/your-feature-nameThen open a Pull Request on GitHub targeting main.
# Run all tests
pytest tests/ -v
# Run a specific test file
pytest tests/test_parser.py -v
# Run with coverage
pip install pytest-cov
pytest tests/ --cov=. --cov-report=term-missingThis project uses Ruff for linting.
# Install
pip install ruff
# Check
ruff check .
# Auto-fix
ruff check . --fixRules followed:
- Max line length: 100 characters
- No unused imports
- No bare
exceptclauses - Use
logging— neverprint()in production code
Before opening a PR, make sure:
- All tests pass (
pytest tests/) - Ruff linting passes (
ruff check .) - You have not committed
.envor any API keys - New features have at least one test in
tests/ - You've updated
README.mdif behavior changed
PR title format:
feat: add Twitter scheduling agent
fix: resolve CORS error on deployment
chore: update dependencies
Copy .env.example to .env and fill in your keys. Never commit .env.
| Variable | Required | Description |
|---|---|---|
GROQ_API_KEY |
✅ | LLM inference via Groq |
TAVILY_API_KEY |
✅ | Web search agent |
NEWSAPI_KEY |
✅ | News crawler |
STABILITY_API_KEY |
✅ | Image generation |
BYTEZ_API_KEY |
✅ | Bytez image model |
ALLOWED_ORIGINS |
✅ | Comma-separated frontend origins |
GROQ_MODEL |
❌ | Defaults to llama-3.1-8b-instant |
BYTEZ_IMAGE_MODEL |
❌ | Defaults to SDXL base |
Open a GitHub Issue and tag it with question.