Python client library for BioSimulagent - AI-powered computational biology toolkit
Project description
bio-simulagent
Version: Backend 0.1.0 | Client 0.3.0
Unix/Unix-like shell agentic workflow system utility for biological simulation and computational drug discovery.
Overview
bio-simulagent is a comprehensive biological simulation platform consisting of:
- Python Client Library (๐ฆ bio-simulagent-client) - MCP client for reproducible research workflows
- TypeScript CLI Frontend - Interactive terminal dashboard for workflow orchestration
- Python MCP Backend - 25 tools across 4 biological domains
The platform is designed for computational biologists and drug discovery researchers who need reproducible, scalable workflows.
Key Features
- Interactive Dashboard: Full-featured terminal UI with 4-panel layout
- Workflow DAG visualization
- Agent status monitoring (5 specialized agents)
- Real-time log streaming with filtering
- Task queue management
- MCP Protocol: 25 tools and 3 resources for biological simulation
- Plugin Architecture: Modular design with 4 bio plugins
bio_design: Molecular design and optimizationbio_literature: Literature search and analysisbio_neural: Neural dynamics simulationbio_simulation: Molecular simulation workflows
- Multiple CLI Modes: Interactive, Run, List, and Status modes
- State Management: Zustand-based reactive state stores
CI/CD Pipeline
This project uses automated testing and quality gates to ensure code reliability:
- Automated Testing: All 271 unit tests run on every push/PR
- Code Quality: Ruff linting and Black formatting enforced
- Type Safety: TypeScript type-checking with tsc
- Coverage: 66% test coverage (target: 85%)
- Fast Feedback: CI completes in ~45 seconds
- Pre-commit Hooks: 10 hooks for local validation
Running Tests Locally
# Python tests with coverage
cd backend
pytest tests/unit/ -v --cov=backend --cov-report=html
# TypeScript type-check and build
npm run typecheck
npm run build
# Code quality checks
ruff check backend/
black --check backend/
npm run lint
See docs/guides/ci-cd-guide.md for detailed setup and troubleshooting.
Requirements
System Requirements
- Node.js: >= 20.0.0
- npm: >= 10.0.0
- Python: >= 3.11 (tested with 3.11.14)
Python Dependencies
The following packages are required in the Python virtual environment:
fastmcp>=2.14.5
mcp>=1.26.0
pydantic>=2.12.5
TypeScript Dependencies
Core dependencies (automatically installed via npm):
{
"@modelcontextprotocol/sdk": "^1.26.0",
"ink": "^5.1.0",
"react": "^18.3.1",
"zustand": "^5.0.0",
"zod": "^4.3.6",
"meow": "^13.0.0"
}
Installation
1. Clone and Setup
git clone <repository-url>
cd bio-simulagent
2. Install Frontend Dependencies
npm install
npm run build
3. Setup Python Environment
# Create virtual environment with Python 3.11+
python3 -m venv .venv
# Activate virtual environment
source .venv/bin/activate # macOS/Linux
# or
.venv\Scripts\activate # Windows
# Install Python dependencies
pip install fastmcp mcp pydantic
Usage
Interactive Mode (Default)
Launch the full dashboard with real-time monitoring:
# Make sure virtual environment is activated
source .venv/bin/activate
# Run the CLI
node dist/cli.js
# or simply
bio-simulagent
Keyboard Shortcuts:
q- QuitTab- Cycle panel focusc- Cancel active workflowl- Cycle log level (DEBUG/INFO/WARNING/ERROR)f- Toggle agent filterr- Refresh dataโ/โ- Scroll log stream (when focused)
Run Mode
Execute a specific workflow with monitoring:
node dist/cli.js run <workflow_name> --objective "Your objective"
# Example:
node dist/cli.js run ligand_optimization --objective "Optimize ACE2 inhibitor"
List Mode
Display available workflows and agents:
node dist/cli.js list
Status Mode
Check the status of a specific workflow:
node dist/cli.js status <job_id>
Development Mode
For development with hot-reload (requires tsx):
โ ๏ธ Note: Due to Claude Code sandbox restrictions, npm run dev may not work. Use the compiled version instead:
npm run build && node dist/cli.js
Testing Results (Week 1)
TypeScript
- Type Checking: โ 0 errors
- Build: โ Success
- Runtime: โ All modes functional
Python Backend
- pytest: โ 12/12 tests passed
- Ruff: โ 0 lint errors
- MCP Tools: โ 25 tools discovered
- MCP Resources: โ 3 resources discovered
- Plugins: โ 4 plugins loaded
UI Verification
- โ Header bar with version and connection status
- โ 4-panel layout (DAG, Agents, Log, Tasks)
- โ Real-time agent status (5 agents)
- โ Interactive keyboard controls
- โ Log filtering and scrolling
Known Issues and Resolutions
Issue #1: Resource URI Mismatch โ Resolved
Problem: Resource URIs in documentation didn't match implementation.
Solution: Added workflow://templates, agent://registry, and plugin://catalog resources.
Files Modified: backend/mcp/resources/core_resources.py
Issue #2: Python Command Compatibility โ Resolved
Problem: npm run dev froze on macOS due to using python instead of python3.
Solution: Updated src/lib/mcp-client.ts to use python3 command.
Files Modified: src/lib/mcp-client.ts (line 10)
Issue #3: fullscreen-ink Compatibility โ ๏ธ Workaround Applied
Problem: CLI immediately exits when using withFullScreen() from fullscreen-ink library.
Current Workaround: Disabled fullscreen mode, using regular render() instead.
Impact: Terminal buffer switching disabled, but all functionality works.
Future Action: Consider upgrading fullscreen-ink or using alternative library.
Files Modified: src/cli.tsx (lines 60-66)
Project Structure
bio-simulagent/
โโโ src/ # TypeScript frontend
โ โโโ cli.tsx # CLI entry point
โ โโโ app.tsx # Main React app
โ โโโ components/ # Ink UI components
โ โโโ hooks/ # React hooks (MCP, polling, logs)
โ โโโ stores/ # Zustand state stores
โ โโโ lib/ # MCP client
โ โโโ types/ # TypeScript types
โโโ backend/ # Python MCP backend
โ โโโ main.py # MCP server entry point
โ โโโ mcp/ # MCP app and handlers
โ โโโ plugins/ # Plugin system
โ โโโ agents/ # Agent implementations
โ โโโ core/ # Core utilities
โ โโโ workflows/ # Workflow definitions
โ โโโ tests/ # Python tests
โโโ docs/ # Documentation
โ โโโ TODO-2026-02-09.md
โ โโโ TESTING-GUIDE.md
โโโ dist/ # Compiled TypeScript
Development Commands
# Build TypeScript
npm run build
# Type checking
npm run typecheck
# Run Python tests
source .venv/bin/activate
pytest backend/tests
# Run Python linter
ruff check backend/
# Discover plugins programmatically
python3 -c "from backend.plugins.loader import PluginLoader; print(PluginLoader().discover())"
Architecture
Frontend (TypeScript + Ink)
- Framework: Ink (React for CLIs) with React 18.3
- State Management: Zustand for reactive stores
- CLI Parsing: meow for argument parsing
- MCP Client: @modelcontextprotocol/sdk with stdio transport
Backend (Python 3.11+)
- Protocol: MCP (Model Context Protocol) over stdio
- Framework: fastmcp for server implementation
- Plugins: Dynamic plugin discovery with manifest system
- Agents: 5 specialized agents for biological simulation
- Design Agent
- Literature Agent
- Neural Dynamic Agent
- Simulation Agent
- Self-Correction Agent
Error Handling
bio-simulagent includes a comprehensive error handling system for production-ready reliability:
Features
- 14 Custom Exception Types: Domain-specific exceptions with structured error details
- Exponential Backoff Retry: Automatic retry with jitter for transient failures
- Circuit Breaker Pattern: Prevents cascading failures in external API calls
- Structured JSON Logging: Full error context for debugging
- 90%+ Test Coverage: 126 comprehensive unit tests
Quick Example
from backend.core.exceptions import NetworkError, InvalidSMILESError
from backend.core.retry import retry_with_backoff, RETRY_CONFIG_AGGRESSIVE
from backend.core.circuit_breaker import CircuitBreaker
# Validate input
if not is_valid_smiles(smiles):
raise InvalidSMILESError(smiles, details={"hint": "Invalid format"})
# API call with retry + circuit breaker
alphafold_circuit = CircuitBreaker(name="AlphaFold API", failure_threshold=5)
result = await alphafold_circuit.call(
retry_with_backoff,
make_api_request,
protein_id="P12345",
config=RETRY_CONFIG_AGGRESSIVE,
retryable_exceptions=(NetworkError, APITimeoutError)
)
Exception Categories
| Category | Examples | Recoverable | Retry |
|---|---|---|---|
| Network | NetworkError, APITimeoutError, APIRateLimitError |
Yes | Yes |
| Validation | InvalidSMILESError, InvalidPDBError, ValidationError |
No | No |
| Resource | ResourceUnavailableError, DatabaseError |
Yes | Yes |
| Computation | ComputationError, ConfigurationError |
No | No |
Documentation
- Comprehensive Guide: See docs/guides/error-handling.md
- Test Examples: See tests/unit/ for 126 usage examples
- Implementation: See backend/core/ for all error handling modules
Testing Error Handling
# Run error handling tests
pytest tests/unit/ -v
# Check coverage (90%+ achieved)
pytest tests/unit/ --cov=backend.core --cov-report=term-missing
Contributing
- Ensure Python 3.11+ and Node.js 20+ are installed
- Activate virtual environment before running CLI
- Run tests before submitting changes
- Follow TypeScript and Python linting rules
License
(Add license information here)
Version History
0.1.0 (2026-02-09)
- Initial release
- Interactive dashboard with 4-panel layout
- 25 MCP tools and 3 resources
- 4 biological simulation plugins
- Multiple CLI modes (interactive, run, list, status)
- Comprehensive testing suite
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bio_simulagent_client-0.5.1.tar.gz.
File metadata
- Download URL: bio_simulagent_client-0.5.1.tar.gz
- Upload date:
- Size: 113.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1f5501361995bc145a06eed6f2340c2e77f84feda83228972d69cf7100b6d28e
|
|
| MD5 |
1e5d41b93ee2d9f11ac2e17ff486268b
|
|
| BLAKE2b-256 |
12accd94d82606c47bfddea0fbb15481d05b0c2bd6502c224fe887a01dc982a9
|
File details
Details for the file bio_simulagent_client-0.5.1-py3-none-any.whl.
File metadata
- Download URL: bio_simulagent_client-0.5.1-py3-none-any.whl
- Upload date:
- Size: 129.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f7602d47b591a342d95b3db8e2aa248bb4685afe55b9e5f91fe5b48c659bcc29
|
|
| MD5 |
51eb81e8b1d8fd4828257a8b2444c627
|
|
| BLAKE2b-256 |
38eda4e62aa2f7a3c4f6340d2e91a1dfdb2f81dfdd4d66a2711ddf5e1b358158
|