← back

The Bio Compiler

Genetic Design Automation — what an "LLVM for cells" would actually require
2026-06-26 · for systems engineers evaluating where the leverage is

The pitch: write a spec, hit compile, get a DNA sequence that boots a working circuit in a living cell. The field built real pieces of that stack — a Verilog-to-DNA compiler that hits 60–75% first-pass, a community IR, a simulator, a package registry. The abstraction leaks at every layer for one reason: a genetic gate is not a transistor. This page maps the stack, where it holds, and why the frontier stopped trying to model its way past context.

One sentence

Synthetic biology is ASIC design, not gcc — software compilation presumes a fixed, isolated, characterized, non-competing, non-mutating substrate, and the cell supplies none of those for free, so every circuit is taped out fresh and validated through a wet measure-and-redesign loop.

1. Cello — the real compiler that exists

Cello (Nielsen, Der, Voigt, Densmore et al., Science, April 2016, 10.1126/science.aac7341) is the closest thing to a working genetic compiler. You write Verilog describing combinational Boolean logic; Cello lowers it to a complete DNA sequence encoding a transcriptional logic circuit that runs in E. coli. A real lowering pipeline, with stages a compiler engineer will recognize:

StageCompiler analogWhat happens
Logic synthesisfront-end → canonical IRVerilog → truth table → AND-Inverter Graph → NOR-Inverter Graph (everything reduced to NOT and NOR)
Gate assignmentinstruction selection + register allocationmap each Boolean gate to a characterized genetic gate (a TetR-family repressor driving a promoter); optimizer matches signal levels across wires so a gate's HIGH/LOW lands in the next gate's input range
Physical designlinker / layoutthe Eugene language enumerates plasmid layout variants → final DNA sequence
The UCF is the backend target. The User Constraint File — a JSON file defining the organism, gate library, response functions, and valid operating conditions — is Cello's "target description," the analog of a compiler backend. Swap the UCF, retarget to a different chassis. This is the right abstraction. The problem (section 3) is that it assumes parts are portable, and they aren't.

The famous number

60 circuits designed for E. coli (~880 kbp of DNA total). Every DNA sequence built as predicted with no additional tuning; 45 circuits worked correctly in every output state, and 92% of all output states matched prediction. That ~60–75% whole-circuit first-build success, fully automated, was the landmark. Repo: github.com/CIDARLAB/cello (CIDAR Lab).

Cello 2.0 (2022) and the yeast port

Cello 2.0 (Jones, Oliveira, Myers, Voigt, Densmore et al., Nature Protocols, Feb 2022, 10.1038/s41596-021-00675-2; MIT PDF) added flexible gate structures with math models in the UCF, formal genome-placement rules, Verilog 2005 syntax, a GUI, and a live pull from the SynBioHub parts repository. Built circuits with up to 11 regulatory proteins.

Yeast Cello (Ross, Voigt et al., Nature Microbiology 2020, 10.1038/s41564-020-0757-2) ported the abstraction to S. cerevisiae: nine NOT/NOR gates, 400-fold dynamic range. The telling detail — eukaryote gates had to be transcriptionally insulated by placing ribozymes downstream of terminators to block nuclear export of read-through mRNA.

The yeast port is the abstraction leaking in plain sight: retargeting to a new chassis did not mean "swap the UCF." It meant inventing a new insulation primitive. A compiler backend you can't reuse without redesigning the instruction set is not a backend — it's a new compiler.

2. The de-facto toolchain (and the missing IR)

If Cello is the compiler, the field assembled the rest of a toolchain around SBOL (Synthetic Biology Open Language) — a shared intermediate representation so tools can interoperate. SBOL is an ontology-backed, RDF / Semantic-Web representation of designs (Sequence Ontology, SBO, GO, Dublin Core; serialized Turtle/JSON/XML), governed by SEP votes. SBOL 3 (Beal, Vidal et al., 2020, PMC7516281) merged SBOL2's separate structural and functional hierarchies into a single Component class scaling from one molecule to multicellular systems.

ToolToolchain roleWho
SBOL 3IR / interchange formatcommunity (sbolstandard.org)
Cellospec → DNA compilerCIDAR Lab / Voigt
EugeneDSL + constraint system, auto-enumerates valid composite devicesDensmore lab (PMC3084710)
iBioSimCAD modeling/simulation (ODE, Monte Carlo, Markov, FBA); SBML + SBOL I/OMyers group, Utah (github)
SynBioHubparts repository — the "package manager"Newcastle / community
SBOLCanvasweb visual editor → SBOLcommunity
There is no LLVM-IR here. SBOL + Cello + iBioSim + SynBioHub form a de-facto stack — source language, IR, optimizer, simulator, registry — but no single stable IR that the whole community compiles through the way every LLVM front-end lowers to one shared representation. SBOL aspires to be that IR; adoption is partial. Design-space peers (GenoCAD, ShortBOL, GEC, GeneTech) fragment further.

3. Why the abstraction leaks — gate ≠ transistor

Every layer leaks for the same root reason: a genetic gate's behavior depends on the cellular context it sits in, and that context is not on the part's datasheet. Five concrete coupling mechanisms:

MechanismWhat breaksSource
Context dependencea part's response shifts with chassis, growth phase, copy number, neighboring sequence, temperature; the UCF assumes parts are modular — response functions driftContext Dependence, bioRxiv
Retroactivity / loadwiring a gate's output downstream titrates the repressor away, changing the upstream gate's dynamics; connections load backward, not one-directional like wiresDel Vecchio, Mol Syst Biol
LeakTFs and riboswitches are never fully off; basal expression means a "0" isn't 0; stacked across layers, leak erodes the logic marginCello 2.0 (read-through, cryptic promoters)
Noise / variabilityCello's deterministic score can't detect error-prone circuits; a high-scoring assignment can produce inverted outputs in cells with large single-cell variabilityACS SynBio 1c00193
Burden / evolutionbig circuits cost the cell; mutants that break the circuit grow faster and take over the population — the substrate deletes your programJ. R. Soc. Interface 2025
"The cell is sort of a burrito. It has everything mixed together." — Christopher Voigt (MIT News, 2012). All gene-reading and protein-synthesis machinery shares one compartment, so any new part can crosstalk with any other. No isolation, no clean abstraction.
Net: Cello's 60–75% first-pass success is real — inside one well-characterized chassis with a hand-curated UCF. Push outside that envelope and the output needs wet-lab tuning: re-characterize parts, re-balance expression, insulate against read-through, screen variants. The datasheet means a different thing in every cell.

4. The deep claim — this is ASIC design, not software

Software compilation presumes a fixed processor: the compiler lowers a program onto an invariant substrate, reusable and isolated and characterized once. Genetic engineering breaks every one of those assumptions. There is no fixed processor — the cell is at once the substrate, the power supply, the memory, and a competing tenant. Each new function needs a new physical construct with new molecular wiring, the way an ASIC needs a new mask set per design.

Software compilation (gcc)
Fixed, characterized CPU. Same transistor stamped a million times. Buffered outputs — wiring doesn't change upstream behavior. Decoupling works: a transistor behaves the same in any netlist position. Binary is static; the CPU never rewrites it. Deterministic lowering, run anywhere.
Genetic engineering (ASIC tapeout)
No fixed processor — bespoke construct per function. Unique chemical wiring for every level of complexity (Voigt). Outputs load backward (retroactivity). Decoupling fails: fabrication changes the part. Substrate mutates to delete the program. Wet Design-Build-Test-Learn tapeout, validate per build.

The founding dream was explicitly software-like — Endy's four-level hierarchy (DNA → Parts → Devices → Systems) let designers ignore lower levels, exactly as a programmer ignores transistor physics (Endy, Foundations for engineering biology, Nature 2005). The load-bearing principle is decoupling — separate design from fabrication. It works in VLSI because the substrate is fixed and characterized. It fails in biology because the "compiled" sequence behaves differently depending on what's next to it, what host it's in, and what else is running.

No universal ISA

A processor has one instruction set; cells don't. Gao & Wang (2024, Toward predictable universal genetic circuit design, PMC12806377) document why parts don't port: B. thetaiotaomicron RNAP σ70 reads a −33/−7 consensus, not E. coli's −35/−10; copy-number differences break repressor-promoter architectures wholesale; oxygen-dependent reporters die in anaerobes. Their fix amounts to shipping your own ISA: a power supply (orthogonal T7 RNAP), a processor (the logic), and a controller (host insulation). To make biology compilable you must drag a portable execution substrate along with the program.

The substrate fights back

Every construct draws from one finite pool of RNAP, ribosomes, tRNAs, ATP. Expressing circuit A changes resources for circuit B, so two independently "correct" modules couple through a hidden global data path no netlist shows (Frei, Nielsen et al. 2024, Resource competition for predictable expression in eukaryotes, Nat Rev Bioeng). And the substrate mutates — "biological engineering efforts can be confounded by undesired evolution that rapidly breaks the functions of parts and systems" (Boudry & Pigliucci, The mismeasure of machine). No CPU rewrites your binary to run faster.

What a true high-level-to-biology compiler would require is to manufacture the missing CPU. Concretely: (1) a fixed orthogonal execution substrate (host-independent RNAP/ribosomes/tRNAs); (2) context-independent, quantitatively characterized parts (host-invariant Hill coefficients / Kd, not fluorescence readouts); (3) guaranteed noise margins / signal matching; (4) universal insulation (load drivers, phosphorylation buffers as default I/O); (5) resource isolation (antithetic feedback controllers); (6) evolutionary stability (burden minimization). Items 1–6 are not the compiler — they are the work of fabricating the fixed processor that software compilers take for granted. (Marchisio & Stelling, Programming cells, PMC2950163.)

5. The 2024–2026 frontier — stop modeling, measure the million

The new wave doesn't replace Cello's compile-from-spec model. It attacks Cello's weakest link — predicting whether a part composition will work in context — on one admission: you cannot model your way past context; you measure at scale and let ML interpolate. Two strands contend.

High-throughput data + ML predictor
CLASSIC (Bashor lab, Rice; Rai, O'Connell; Nature, Jan 15 2026). Long-read + short-read sequencing characterizes hundreds of thousands to millions of circuit designs at once in HEK cells, then trains ML on brightness-sorted data to predict untested designs. 40/40 predicted circuits matched. Pragmatic winner so far — but scoped to reporter-gene expression, not arbitrary function.
Generative design from scratch
A conditional VAE generates novel circuit topologies matching complex dynamic functions (e.g. signal adaptation), past Boolean logic into continuous dynamics (npj Syst Biol 2026; bioRxiv Sep 2025). Broader generative review — VAEs, diffusion (RFdiffusion), protein LMs + AlphaFold3 for de-novo parts (Cell Systems 2026). Earlier-stage, fewer wet validations.

Industry / autonomous labs: TeselaGen (ML metabolic engineering), Cradle Bio & Evogene (generative enzyme/host optimization), Latent Labs (DeepMind spinout, $50M, Feb 2025), Lila Sciences ("AI Science Factories", $1.3B, Oct 2025). A 2025 Nature Communications autonomous AI-biofoundry reported enzymes with up to 90-fold substrate-preference improvement.

The direction of travel: less "compile once, run anywhere," more "compile, measure a million, learn the chassis." That iterative measure-and-redesign loop is the ASIC tapeout-and-bring-up cycle, not gcc — a wet Design-Build-Test-Learn loop is fabrication-then-measurement, not deterministic lowering.
Where a systems engineer should actually build is its own page. The honest answer is standalone systems artifacts with intrinsic value, not biology glue. See what to build →.