Deploying compute services¶
NovoMCP's engine is thin, it orchestrates tool calls but the heavy lifting (docking, molecular dynamics, protein structure, quantum-mechanical calculations, ADMET inference) lives in separate compute services. Each is optional. You deploy the ones you need, point the engine at them via env vars, and the corresponding tools "light up."
The engine works without any of them. Property calculation, similarity search, literature lookups, and compliance filtering run in-process. Everything else requires a downstream service.
Tool → service dependency matrix¶
| Tool | Service | Notes |
|---|---|---|
get_molecule_profile |
chem-props (+ addie-models for full ADMET) |
CPU-only. Works partially without either, returns basic properties. |
calculate_properties |
chem-props |
CPU-only. RDKit descriptors, BOILED-Egg. |
predict_admet |
addie-models |
CPU or GPU. 31 pretrained ADMET models. |
search_similar |
molecule-index |
Morgan fingerprint similarity against the enriched index. |
search_chembl |
(none, external ChEMBL API) | Requires internet only. |
search_literature |
(none, external Pinecone) | Requires PINECONE_API_KEY. Falls back to zero results without. |
search_patents |
(none, external Pinecone) | Same as above. |
check_compliance |
compliance (generic hook) |
Optional. Forwards to NOVOMCP_COMPLIANCE_URL; no bundled ruleset. |
dock_molecules |
autodock-gpu |
NVIDIA GPU required. AutoDock-GPU. |
dock_with_strain |
autodock-gpu + novomcp-qm |
Docking + GFN2-xTB strain check. |
run_molecular_dynamics |
gromacs-md |
NVIDIA GPU required. GROMACS with HMR. |
generate_dynamics |
gromacs-md |
Same. |
predict_structure |
openfold3 |
NVIDIA GPU required. Or use Chai, Boltz. |
get_protein_structure |
(external RCSB PDB) | Requires internet. |
run_qm_calculation |
novomcp-qm |
CPU. xTB / CREST. |
run_conformer_search |
novomcp-qm |
CPU. CREST. |
run_qm_hessian |
novomcp-qm |
CPU. Hessian / frequencies. |
run_excited_states |
novomcp-qm |
CPU. Excited-state energies. |
predict_redox_potential |
novomcp-qm |
CPU. |
predict_reaction_thermodynamics |
novomcp-qm |
CPU. ΔG, ΔH. |
parameterize_metal |
novomcp-qm |
CPU + your own Gaussian (two-phase; Gaussian-only). |
predict_frontier_orbitals |
novomcp-qm |
CPU. |
compute_energy |
novomcp-nnp |
GPU or CPU. MLIP single-point energy. |
optimize_geometry_nnp |
novomcp-nnp |
GPU or CPU. AIMNet2 / MACE / ANI-2x. |
predict_pka |
novomcp-properties |
CPU. Trained pKa model (weights NonCommercial, opt-in). |
predict_solubility |
novomcp-properties |
CPU. |
predict_bde |
novomcp-properties |
CPU. |
find_transition_state |
novomcp-neb |
GPU. NEB via tblite. |
run_novo_ag |
(all of the above for its 11 stages) | Autonomous funnel. |
Wiring pattern¶
Every service is wired through an environment variable. Point the engine at wherever the service is running:
# Local docker
export CHEM_PROPS_URL=http://localhost:8003
# Remote box on your LAN
export CHEM_PROPS_URL=http://10.0.0.42:8003
# Cloud endpoint
export AUTODOCK_GPU_URL=https://autodock.mycompany.com
If the env var is unset, the tool returns a structured service unavailable error, the engine keeps running, the caller learns immediately, no crash.
Full env-var list per service is documented in each service's page.
After deploying, confirm it actually computes — a running container isn't a working tool. verifying-services.md gives a one-shot "real data, not just /health" check per service (with the exact call the engine makes and the real output to expect), plus the GPU cold-start and inbound-auth gotchas.
Deployment tiers¶
Tier 1, Turnkey CPU-only (a laptop is enough):
The bundleddocker-compose.yml runs the engine + optional CPU services (chem-props, addie-models). Uncomment the blocks you want.
Tier 2, Add a GPU (workstation or single cloud GPU instance): Deploy each GPU service as its own container. See per-service pages below.
Tier 3, Multi-host (team deployment):
Engine on one box, GPU services on another. All wired via env vars. See deploying-to-cloud/ for reference AWS / GCP / Azure setups.
Tier 4, Marketplace one-click (coming soon): AWS Marketplace and GCP Cloud Marketplace listings under development.
Per-service pages¶
CPU-only services (laptop-friendly):
- chem-props.md, molecular property calculator (RDKit)
- novomcp-qm.md, quantum-mechanical calculations (xTB, CREST, MCPB.py)
- novomcp-properties.md, pKa, solubility, BDE
- addie-models.md, ADMET prediction (CPU works; GPU is faster)
GPU services:
- autodock-gpu.md, molecular docking (AutoDock-GPU)
- gromacs-md.md, molecular dynamics (GROMACS, HMR)
- openfold3.md, protein structure prediction (also Chai-1, Boltz-2 compatible)
- novomcp-nnp.md, neural network potentials (AIMNet2, MACE, ANI-2x)
- novomcp-neb.md, transition-state search (CI-NEB)
Every service follows the same pattern: docker image at ghcr.io/novomcp/<service>:latest, env var <SERVICE_NAME_UPPER>_URL wires the engine to it, structured errors when unreachable.
Building from source¶
Each compute service has its own repository. The engine talks to them over HTTP; there's no vendored build path in this repo. If you want to modify or rebuild a service, clone its source and follow its own README.