Skip to main content

Quantum

CI Docker Docs License: MIT

Declarative web apps in XML, with AI and RAG built into the language. No build chain, no JavaScript, no frontend framework.

Quantum is a full-stack framework whose language is markup. State, database queries, forms, LLM calls and retrieval-augmented generation are all tags — not libraries you wire together. It takes its philosophy from ColdFusion and Adobe Flex: the markup is the app.

⚠️ Pre-1.0, and honest about it. See Stability — the table there reflects what has actually been executed end-to-end, not what is aspirational.


The part that isn't like the others

Retrieval-augmented generation, as a language construct:

<q:component name="DocsBot">
  <q:knowledge name="docs" model="phi3" embedModel="nomic-embed-text">
    <q:source type="directory" path="./docs/" pattern="*.md" />
  </q:knowledge>

  <q:query name="answer" datasource="knowledge:docs" mode="rag">
    SELECT answer FROM chunks WHERE content SIMILAR TO :question
    <q:param name="question" value="{form.question}" type="string" />
  </q:query>

  <p>{answer.answer}</p>
</q:component>

That indexes a directory, embeds it, stores the vectors, retrieves the relevant chunks and asks the model — in the markup. There is no Python file behind it.

An agent with its own tools, same idea:

<q:agent name="calc" model="phi3" max_iterations="4">
  <q:instruction>Use the add tool, then answer.</q:instruction>

  <q:tool name="add" description="Add two numbers">
    <q:param name="a" type="number" required="true" />
    <q:param name="b" type="number" required="true" />
    <q:function name="doAdd">
      <q:set name="sum" value="{a + b}" type="number" />
      <q:return value="{sum}" />
    </q:function>
  </q:tool>

  <q:execute task="What is 17 plus 25?" />
</q:agent>

The tool body is Quantum, not Python. The reasoning loop, the tool call and the type coercion of the model's arguments are the runtime's job.


The rest of the language

<q:component name="Orders">
  <q:query name="orders" datasource="db">
    SELECT id, customer, total FROM orders WHERE total > :min
    <q:param name="min" value="100" type="decimal" />
  </q:query>

  <table>
    <q:loop query="orders">
      <tr><td>{orders.customer}</td><td>{orders.total}</td></tr>
    </q:loop>
  </table>
</q:component>

q:query refuses to run SQL with an undeclared :param — parameterised queries are enforced by the parser, not by discipline.

Also core: q:set with session. / application. / request. scopes, q:if, q:function, q:action for form handling, q:data for CSV/JSON/XML import, q:import / q:slot for composition.


Quick start

Requirements: Python 3.11+ and pip.

git clone https://github.com/danielgregorio/quantum.git
cd quantum
pip install -e ".[dev]"

quantum run examples/hello.q
[EXEC] Executing component: HelloWorld
[SUCCESS] Result: Hello World!

For the AI examples you also need an Ollama server and the RAG extra:

pip install -e ".[rag]"
ollama pull phi3 && ollama pull nomic-embed-text
export QUANTUM_LLM_BASE_URL=http://localhost:11434

Declare datasources in quantum.config.yaml and q:query works with nothing else running:

datasources:
  db:
    driver: sqlite
    database: ./data/app.db

CLI

Command What it does
run <file.q> Execute a component, app, or API
start Start the web server
deploy <dir> Deploy an application
pkg · jobs · mq · migrate Packages, jobs, message queues, migrations

Documentation

Full docs (VitePress) at danielgregorio.github.io/quantum and in docs/:


Stability

Support levels are defined in SUPPORT_TIERS.md. Short version:

Surface Status
Core language — q:component, q:set, q:if, q:loop, q:function, q:query, q:action, q:invoke, q:data Stable
AI — q:llm, q:knowledge, q:agent Beta — validated end-to-end against a live Ollama server
q:team (multi-agent handoff) Beta, less exercised
Jobs, messaging, websockets, mail, file uploads, ui:*, terminal target Experimental — they run, but no API stability promise
Python scripting (q:python, q:pyclass, q:pyimport) Experimental, and a full-trust escape hatch — see SECURITY.md

A functional audit in 2026-09 found that several of these surfaces had never been run end-to-end despite being documented as complete. The findings and the fixes are in FULL_AUDIT_2026-09.md and AUDIT_FIX_PLAN.md. Feature status is now verified by execution rather than asserted by hand.

Pre-1.0: APIs may change between minor versions.


Project layout

quantum/
├── quantum/
│   ├── core/        # Parser & AST (registry-based, modular)
│   ├── runtime/     # Execution engine, web server, renderer
│   └── cli/         # Command-line entry point
├── examples/        # runnable .q examples
├── tests/           # pytest suite (~2.4k tests)
├── scripts/         # dev tools
└── docs/            # VitePress documentation

Adding a tag is one parser + one executor + a registry entry — see CONTRIBUTING.md.


Contributing

Read CONTRIBUTING.md for dev setup and how the modular parser/executor architecture works. By participating you agree to the Code of Conduct.

Found a security issue? Follow SECURITY.mddo not open a public issue.

License

MIT — see LICENSE.

Release files for quantum-framework 0.9.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for quantum-framework 0.9.0
File Size Uploaded
quantum_framework-0.9.0.tar.gz 815.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for quantum-framework 0.9.0
File Interpreter ABI Platform
quantum_framework-0.9.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.6 MB

Release files / quantum_framework-0.9.0.tar.gz

Download URL quantum_framework-0.9.0.tar.gz
Size 815.7 kB
Tags Source
SHA-256 checksum
How to use checksums
970b186ee7c2bc0bc652b1488c2e34098b6f32a5f68df2598f1230871bdc1bd3
BLAKE2b-256 checksum
How to use checksums
aa6e07bf5aaa87175c7dd5d800da745db0dc6b38c8d47941bdc8c814815217d1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 10, 2026.

Transparency log

Release files / quantum_framework-0.9.0-py3-none-any.whl

Download URL quantum_framework-0.9.0-py3-none-any.whl
Size 790.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1d178cf7b989958a4ab0e6045954e76cd4f4e1f8f78e724908347a6d76adf635
BLAKE2b-256 checksum
How to use checksums
be0b18dba312ff97c0e008ea7c5f52a9d555a3de9cf9e1e13babebb7fe6bb242
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 10, 2026.

Transparency log

Release history Release notifications | RSS feed

0.22.0

2 release files

0.21.0

2 release files

0.20.0

2 release files

0.19.0

2 release files

0.18.0

2 release files

0.17.0

2 release files

0.16.0

2 release files

0.15.0

2 release files

0.14.0

2 release files

0.13.0

2 release files

0.12.0

2 release files

0.11.0

2 release files

0.10.0

2 release files

0.9.1

2 release files

This release

0.9.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page