{"id":31287894,"url":"https://github.com/sunitj/biocurator","last_synced_at":"2026-05-15T13:30:55.309Z","repository":{"id":316125207,"uuid":"1060842421","full_name":"sunitj/bioCurator","owner":"sunitj","description":"Memory-augmented multi-agent system for scientific literature curation and analysis.","archived":false,"fork":false,"pushed_at":"2025-09-22T19:55:36.000Z","size":93,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-22T21:21:30.386Z","etag":null,"topics":["cagent","curation","docker","literature-review","multi-agent-systems"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sunitj.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-20T17:48:50.000Z","updated_at":"2025-09-22T19:55:39.000Z","dependencies_parsed_at":"2025-09-22T21:21:34.369Z","dependency_job_id":null,"html_url":"https://github.com/sunitj/bioCurator","commit_stats":null,"previous_names":["sunitj/biocurator"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/sunitj/bioCurator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sunitj%2FbioCurator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sunitj%2FbioCurator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sunitj%2FbioCurator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sunitj%2FbioCurator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sunitj","download_url":"https://codeload.github.com/sunitj/bioCurator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sunitj%2FbioCurator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276738912,"owners_count":25696021,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-24T02:00:09.776Z","response_time":97,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cagent","curation","docker","literature-review","multi-agent-systems"],"created_at":"2025-09-24T11:30:25.759Z","updated_at":"2025-09-24T11:32:17.993Z","avatar_url":"https://github.com/sunitj.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BioCurator\n\nMemory-augmented multi-agent system for scientific literature curation and analysis.\n\n## Overview\n\nBioCurator demonstrates how AI agents can develop domain expertise through collaborative literature analysis, using a sophisticated multi-modal memory architecture and safety-first development approach.\n\n## Quick Start\n\n### Development Mode (Local Models - Zero Cost)\n\n```bash\n# Set up development environment with UV\nexport UV_LINK_MODE=copy\n./scripts/setup_venv.sh\nsource .venv/bin/activate\nexport APP_MODE=development\n\n# Configure environment (optional - uses defaults if not set)\ncp .env.example .env\n# Edit .env to set JUPYTER_TOKEN and other configurations\n\n# Run with local models (Ollama) - services start in dependency order\ndocker-compose -f docker-compose.yml -f docker-compose.development.yml up -d\n\n# Wait for all services to be healthy (takes ~30-60 seconds)\ndocker-compose ps  # Check status\n\n# Access services (replace localhost with your server IP if remote):\n# - BioCurator API: http://localhost:8080/\n# - Health Status: http://localhost:8080/health/\n# - Neo4j Browser: http://localhost:7474/ (user: neo4j, password: dev_password)\n# - Jupyter Lab: http://localhost:8888/ (token: biocurator-dev or JUPYTER_TOKEN)\n# - Ollama API: http://localhost:11434/\n\n# Verify system health\ncurl -s http://localhost:8080/health/ | python -m json.tool\n```\n\n### Production Mode (Cloud Models)\n\n```bash\n# Set up production environment with UV\n./scripts/setup_venv.sh\nsource .venv/bin/activate\nexport APP_MODE=production\n\n# Run with cloud models\ndocker-compose -f docker-compose.yml -f docker-compose.production.yml up\n```\n\n## Architecture\n\n\u003c!-- Architecture Diagram Placeholder: docs/images/architecture.png --\u003e\n\u003c!-- TODO: Add detailed system architecture diagram showing component interactions --\u003e\n\n```text\n┌─────────────────────────────────────────────────────────┐\n│                     Agent Orchestra                      │\n├─────────────────────────────────────────────────────────┤\n│  Research    Literature    Deep      Domain    Knowledge │\n│  Director      Scout      Reader   Specialist   Weaver  │\n└────────────┬────────────────────────────────────────────┘\n             │\n┌────────────▼────────────────────────────────────────────┐\n│                   Safety Controls                        │\n│  Circuit Breakers │ Rate Limiting │ Cost Tracking       │\n└────────────┬────────────────────────────────────────────┘\n             │\n┌────────────▼────────────────────────────────────────────┐\n│                  Memory Systems                          │\n│   Neo4j   │   Qdrant   │  PostgreSQL  │  Redis │ SQLite │\n└──────────────────────────────────────────────────────────┘\n```\n\n## Key Features\n\n- **Multi-Agent Coordination**: Specialized agents for literature discovery, analysis, and synthesis\n  - Research Director for workflow orchestration\n  - Literature Scout, Deep Reader, Domain Specialist, Knowledge Weaver (future PRs)\n  - Async message passing with request/response patterns\n  - Persistent task queue with dependency management and retry logic\n\n- **Multi-Modal Memory**: Knowledge graph, vector embeddings, episodic memory, and procedural patterns\n  - Neo4j knowledge graph with concept relationships\n  - Qdrant vector store for semantic search\n  - PostgreSQL episodic memory for interaction histories\n  - Redis working memory for active contexts\n  - InfluxDB time-series metrics (optional)\n\n- **Safety-First Design**: Circuit breakers, rate limiting, cost tracking, and anomaly detection\n  - Per-agent circuit breakers with configurable thresholds\n  - Rate limiting with token bucket algorithm\n  - Real-time cost tracking and budget enforcement\n  - Behavior monitoring with anomaly detection\n  - Comprehensive safety event logging\n\n- **Development Mode**: Free local model operation with Ollama (DeepSeek-R1, Llama 3.1, Qwen 2.5)\n  - Zero cost budget enforcement\n  - Hard guard against cloud model access\n  - Local model optimization with quality bridging\n\n- **Production Ready**: Cloud model integration with comprehensive monitoring and observability\n  - Claude Sonnet 4 and GPT-4o model support\n  - Prometheus metrics integration\n  - Health monitoring with agent status reporting\n  - Auto-scaling and load balancing capabilities\n\n## Development\n\n### Requirements\n\n- Python 3.11+\n- [UV package manager](https://docs.astral.sh/uv/) (installed automatically by setup script)\n- Docker and Docker Compose\n\n### Setup\n\n```bash\n# Automated setup with UV\n./scripts/setup_venv.sh\nsource .venv/bin/activate\n\n# Manual setup alternative\nuv venv --python 3.11\nsource .venv/bin/activate\nuv pip install -e \".[dev]\"\n```\n\n### Common Commands\n\n```bash\n# Run tests\nmake test\n\n# Run linting\nmake lint\n\n# Format code\nmake format\n\n# Build containers\nmake build\n\n# View metrics\ncurl http://localhost:9090/metrics\n\n# Check health (includes agent status)\ncurl http://localhost:8080/health\n\n# Run agent workflow examples\npython examples/basic_workflow.py     # Basic multi-agent workflow\npython examples/safety_demo.py       # Safety controls demonstration\n\n# Agent system health\ncurl http://localhost:8080/health | jq '.components[] | select(.name | startswith(\"agent\"))'\n```\n\n## Documentation\n\n- [Architecture Decision Records](docs/adr/)\n- [API Documentation](docs/api/)\n- [Development Guide](docs/development.md)\n- [Safety Controls](docs/safety.md)\n\n## Testing\n\nThe project maintains:\n\n- \u003e=70% overall test coverage\n- \u003e=85% coverage for safety-critical modules\n- Comprehensive integration tests\n- Performance benchmarks\n\n## Troubleshooting\n\n### Common Issues\n\n1. **Services fail to start or restart continuously**\n   - Check Docker logs: `docker logs \u003ccontainer-name\u003e`\n   - Neo4j memory settings require specific format in Docker Compose\n   - Ensure all required ports are available: 8080, 7474, 7687, 6333, 5432, 6379, 8086\n\n2. **Application can't connect to databases**\n   - Verify environment variables are set in docker-compose files\n   - Services must use container names (e.g., `redis`, `postgres`) not `localhost`\n   - Check that all services are healthy: `docker-compose ps`\n\n3. **Health endpoint shows \"unhealthy\" but system works**\n   - This is expected if optional backends (like InfluxDB) aren't initialized\n   - Check individual component status in the health response\n   - Only required backends (Redis, PostgreSQL, Neo4j, Qdrant) need to be healthy\n\n4. **Cannot access endpoints from browser (EC2/Remote)**\n   - Ensure security groups allow inbound traffic on required ports\n   - Use server's public IP instead of localhost\n   - Consider SSH tunneling for secure development access\n\n5. **Fresh start after issues**\n   ```bash\n   docker-compose down\n   docker volume rm $(docker volume ls -q | grep biocurator)  # Removes all data\n   docker-compose build --no-cache app\n   docker-compose -f docker-compose.yml -f docker-compose.development.yml up -d\n   ```\n\n## License\n\nApache 2.0 - See LICENSE file for details\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsunitj%2Fbiocurator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsunitj%2Fbiocurator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsunitj%2Fbiocurator/lists"}