Block Orchestrated Architecture
The first AI-native software framework. Build modular, polyglot, self-testing applications with blocks that any language — and any AI — can understand.
Get StartedAI-Native
Blocks are < 200 lines with explicit contracts, INTENT metadata, and FIXTURE tests. AI understands and modifies them without losing context.
Polyglot
Write blocks in Node, Python, Go, Rust, Java, or any language. The Universal Runtime Protocol connects them all via STDIN/STDOUT JSON.
Full-Stack
Backend blocks for business logic. UI blocks for the browser. Workflows orchestrate both — same patterns, same tools, same CLI.
Self-Testing
Every block declares FIXTURE tests inline. Run boa validate to test everything in one
command. No separate test files needed.
How It Works
BOA decomposes software into small, isolated blocks. Each block has one responsibility, explicit inputs/outputs, and built-in tests. Workflows chain blocks together declaratively.
Define a Block
BLOCK CalculateOrderValue 1.0.0
LAYER domain
RUNTIME node
ENTRY index.js
DESC Computes subtotal from order items.
INTENT Calculate the total value of a cart.
RULE subtotal = sum of price * quantity.
RULE Round to 2 decimal places.
IN items:array!
OUT subtotal:number
FIXTURE {"items":[{"price":50,"quantity":2}]}
-> {"subtotal":100}
Chain into Workflows
WORKFLOW OrderProcessing 1.0.0
DESC Calculate value and tax for an order.
STEP calcValue = CalculateOrderValue@1.0.0
MAP items <- _initial.items
STEP calcTax = ComputeTax@1.0.0
MAP subtotal <- calcValue.subtotal
STEP format = FormatString@1.0.0
MAP template <- _initial.template
MAP total <- calcTax.total
Run with a single command
# Test everything
$ boa validate
Blocks: 5 registered
Fixtures: 12 passed, 0 failed
Status: OK All valid
# Or run a specific workflow
$ boa run workflows/order/workflow.boa --input-file order.json
Works in the Browser Too
The UI Framework brings the same block architecture to the client. Pure UI blocks, capability blocks for side effects, and a framework-agnostic SDK that works with React, Vue, Angular, or vanilla JS.
import { createBoaUI } from "@boa-framework/ui";
const boa = createBoaUI();
// Register blocks and workflows, then run:
const result = await boa.run("CheckoutUIWorkflow", { cartId: 42 });
// Works with any framework — React, Vue, Angular, jQuery, vanilla JS
Why BOA?
Add@1.0.0). Upgrades are intentional, never
accidental.
boa impact BlockName@1.0.0 to see exactly what a change affects before making it.