OmniBioAI Tool Execution Service (TES)
omnibioai-tool-exec is a standalone Tool Execution Service (TES) that enables secure, validated, and reproducible execution of bioinformatics tools across heterogeneous compute environments (local, HPC, cloud, or remote servers).
It is designed to be used by agentic AI systems (such as OmniBioAI) where an LLM interprets user intent, but never executes tools directly. Instead, all execution is delegated to TES via a strict API contract.
Why TES exists
LLMs are good at understanding intent, but bad at safely running tools.
TES solves this by acting as a control plane between AI agents and real compute:
- Validates tool inputs and resource requests
- Matches tools to compatible execution environments
- Executes tools in a controlled adapter layer
- Tracks run lifecycle (submitted → running → completed/failed)
- Returns structured, machine-readable results
This prevents:
- Arbitrary command execution
- Hallucinated tool outputs
- Tight coupling between UI, AI, and infrastructure
Core Concepts
Tool
A tool is a declarative definition of:
- Inputs schema (JSON Schema)
- Outputs schema
- Requirements (e.g. BLAST database, reference genome)
Example:
tool_id: blastn
inputs_schema:
required: [sequence, database]
Server
A server represents an execution environment:
- Local machine
- HPC cluster
- Kubernetes
- Remote API-backed service
Each server advertises:
- Which tools it supports
- Available resources
- Storage constraints
- Runtime policies
Adapter
An adapter translates a validated run request into a real execution:
- Local process
- Container
- Job scheduler
- HTTP call
Adapters are pluggable and isolated from the API layer.
Architecture Overview
User / Chat UI
|
v
LLM / Agent (intent only)
|
v
omnibioai-tool-exec (TES)
- validate
- route
- execute
|
v
Execution Environment
(local / HPC / cloud)
Key rule: LLMs never execute tools. TES does.
API Overview
TES exposes a REST API (OpenAPI / FastAPI-based).
Discovery
GET /api/tools– list available toolsGET /api/servers– list available servers and capabilities
Execution
POST /api/runs/validate– validate tool + inputs + resourcesPOST /api/runs/submit– submit a runGET /api/runs/{run_id}– get run statusGET /api/runs/{run_id}/results– fetch results when ready
Example: BLAST run lifecycle
1. Validate
POST /api/runs/validate
{
"tool_id": "blastn",
"inputs": {
"sequence": ">q\nACGTACGT",
"database": "ecoli_demo"
},
"resources": { "cpu": 2, "ram_gb": 2 }
}
2. Submit
POST /api/runs/submit
→ { "run_id": "run_abc123" }
3. Poll
GET /api/runs/run_abc123
→ state: RUNNING | COMPLETED | FAILED
4. Fetch results
GET /api/runs/run_abc123/results
→ structured JSON results
Demo Adapter (Current)
The default configuration includes a local demo adapter that returns mock BLAST results.
This is intentional:
- It validates the entire execution pipeline
- It allows frontend and agent development without heavy dependencies
- It can be replaced with a real backend without changing the API
Different inputs currently return the same demo output. Replace the adapter to enable real BLAST execution.
Running the Service
Requirements
- Python ≥ 3.11
piporpipx
Install (editable)
pip install -e .
Run
omnibioai-tes serve \
--host 127.0.0.1 \
--port 8080 \
--tools configs/tools.example.yaml \
--servers configs/servers.example.yaml
API Docs
Open:
http://127.0.0.1:8080/docs
Configuration
Tools
Defined via YAML:
- tool_id: blastn
display_name: BLASTN
inputs_schema:
required: [sequence, database]
Servers
Defined via YAML:
- server_id: local_demo
adapter_type: local
capabilities:
tools:
- tool_id: blastn
features:
databases: [ecoli_demo]
Integration with OmniBioAI
TES is designed to be used server-to-server.
Typical flow:
- User chats with OmniBioAI
- LLM identifies a tool intent (
blast:) - Django backend calls TES
- TES executes and returns results
- Results are rendered in chat UI
No browser-to-TES calls are required.
What TES is not
- ❌ A workflow engine (Nextflow/WDL belong elsewhere)
- ❌ A UI
- ❌ An LLM executor
- ❌ A database
TES is a secure execution boundary.
Roadmap
- Real BLAST+ adapters (local / container / HPC)
- OMIM / annotation tools
- Async callbacks & long-running job tracking
- Auth / multi-tenant policies
- Artifact storage backends (S3, GCS, POSIX)
License
Apache 2.0 (or your chosen license)
Metadata
Release files for omnibioai-tool-exec 0.1.18
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| omnibioai_tool_exec-0.1.18.tar.gz | 33.4 kB | Without provenance | Details for omnibioai_tool_exec-0.1.18.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| omnibioai_tool_exec-0.1.18-py3-none-any.whl | Python 3 | none | any | Details for omnibioai_tool_exec-0.1.18-py3-none-any.whl |
Total release size: 78.2 kB
Release files / omnibioai_tool_exec-0.1.18.tar.gz
| Download URL | omnibioai_tool_exec-0.1.18.tar.gz |
|---|---|
| Size | 33.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
735d44738f4d1d24d81eacdb59087e3b393c2ef183210a283aef18ca0f30d8cf
|
|
BLAKE2b-256 checksum How to use checksums |
2a0f588902acaa75498618867e324cc22d586f6eaabd6f3fb1e45568d69cd655
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.9
|
Release files / omnibioai_tool_exec-0.1.18-py3-none-any.whl
| Download URL | omnibioai_tool_exec-0.1.18-py3-none-any.whl |
|---|---|
| Size | 44.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2927e05fa9736b0bcc268934d2b407f8c8562a15bedf28479a1cfc98e8936dae
|
|
BLAKE2b-256 checksum How to use checksums |
0ca2605d21616551fa92271e5678e3fdcb73600a32d448e5cf5ef29f4f965a09
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.9
|
Security for omnibioai-tool-exec 0.1.18
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.