Business question
Can a small lab or bioinformatics team run a reproducible DESeq differential-expression workflow through a web UI while giving power users and AI agents the same backend through REST, CLI payloads, and MCP?
What we can do with this
This architecture affords users of the software (employees) multiple ways of accessing the differential expression workflow. For example, if a user wanted to run a differential expression analysis using an agent, the web page upload, or the command line, all three are viable.
Try the workflow
This workflow demonstrates a practical pattern for analytics teams: one analysis pipeline, multiple access surfaces. A non-technical user can launch a synthetic DESeq run from the browser, a power user can automate the same run over REST/CLI, and an agent can orchestrate it through MCP tools. All three surfaces submit into the same backend job system, so results stay consistent while each audience gets the interface that fits how they work.
Its biggest strength is operational consistency under different usage styles. The queue-backed worker layer allows concurrent job execution, while the UI now renders run-specific artifacts only after the submitted job completes. That makes the demo useful both as a product UX prototype and as a systems proof-of-concept for reproducible, agent-accessible bioinformatics workflows.
To build this on your own desktop, start the local stack from demos/agent-accessible-workflows using the included quickstart scripts (start-demo and verify-demo), then open this portfolio page locally and submit runs with your generated API_TOKEN. The same packaged flow supports UX, CLI, and agent validation on a single workstation.
Run this demo on your workstation
For technical reviewers, this project includes a copy-paste local package that runs UX + CLI + agent surfaces on one machine.
1. Analysis configuration
2. Submit and monitor
- Job ID
- not submitted
- Status
- idle
- Message
- Submit a job to render outputs for that run.
3. Results preview (job-specific)
Results
Artifact preview
Synthetic data
The live run flow supports bounded synthetic compute presets:
small: 1,000 genes x 12 samplesmedium: 5,000 genes x 24 sampleslarge: 10,000 genes x 32 samples
Architecture
This workflow uses a single backend pipeline with multiple access surfaces:
- UX surface: portfolio web page for guided run submission
- CLI/API surface: direct REST calls and scripted batch submissions
- Agent surface: Cloudflare Worker MCP gateway (
run_deseq, status, summary tools) - Control plane: FastAPI endpoint handling auth, job submission, and artifact access
- Queue layer: Redis-backed queue for concurrent job orchestration
- Compute layer: Dockerized PyDESeq2 workers executing synthetic differential expression runs
- Artifact layer: per-job outputs (CSV + plots + report) returned through API artifact endpoints
Flow summary: UX / CLI / Agent -> API -> Redis queue -> Worker containers -> job artifacts -> API responses/UI rendering
Optional REST example
curl -X POST "$API_BASE_URL/tools/run_deseq" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
--data-binary @fixtures/run-deseq-synthetic.json
Agent tools
The Cloudflare Worker exposes an MCP endpoint with tools for run_deseq, get_job_status, get_deseq_results_summary, and get_synthetic_dataset_info. run_deseq remains available to agents with synthetic-only inputs and profile selection.
Reproduce locally
cd demos/agent-accessible-workflows
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python3 data/generate.py
python3 src/run.py