QuantumOptics.jl: simulating quantum systems in Julia
Library for the numerical simulation of closed as well as open quantum systems.
At a glance
- What is it?
- QuantumOptics.jl is a numerical framework written in Julia for simulating quantum systems, inspired by the MATLAB Quantum Optics Toolbox and the Python library QuTiP, with documentation, examples, benchmarks and a website split into sibling repositories. It is a research tool with an academic citation attached, and the README is mostly about how to use and cite it.
- Who is it for?
- QuantumOptics.jl fits a physicist or graduate student who wants a Julia-native way to simulate open and closed quantum systems and who wants an example-driven API rather than a paper to implement from. It is the wrong choice if your code is in Python and already works with QuTiP, since the value here is the Julia ecosystem and the examples, not a different model.
- Can I use it commercially?
- Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
- Is it still maintained?
- Yes. The repository last received commits 11 days ago.
- What is it written in?
- Mainly Julia, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 24, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A Julia framework for quantum system simulation
The README describes QuantumOptics.jl as a numerical framework written in Julia that makes it easy to simulate various kinds of quantum systems, and the repository description is more precise: a library for the numerical simulation of closed as well as open quantum systems.
That pair of words in the description is the whole scope. A closed system evolves on its own, and an open one exchanges energy or particles with an environment, which in the formalism means a dissipator term alongside the Hamiltonian. Simulating the open case is where the numerics get interesting, because you are integrating a Lindblad equation rather than a Schrödinger equation, and the difference is not a detail of implementation but a different model of the system.
The lineage is stated too. The framework is inspired by the Quantum Optics Toolbox for MATLAB and by the Python framework QuTiP. That tells you two things: the vocabulary and the API shape come from a lineage people already know, and the point of a Julia version is to bring that vocabulary to the Julia ecosystem, where it can share a type system and a compiler with the rest of a numerical stack.
The homepage is qojulia.org, and the stable documentation lives at docs.qojulia.org, with a build badge and a codecov coverage badge in the README pointing at both.
Five repositories, one organisation
The Project Structure section is a map of the whole effort, and it is worth reading because it tells you where to look for the thing you want.
The main code is in this repository. The documentation source is under docs/src in the same repository, and the examples are under docs/examples, also here. The benchmarks are in a separate repository, QuantumOptics.jl-benchmarks, and the website is in another, QuantumOptics.jl-website, which is where the logo and the site pages come from.
All of them sit under the qojulia organisation on GitHub, which is the marker to use when you are looking for the framework elsewhere and you want to be sure you have found the maintained version rather than a copy.
The split of benchmarks into their own repository is the interesting choice. Benchmark results are only meaningful relative to a machine and a Julia version, and separating them keeps the main repository's history clean of large result files while giving the benchmark suite a home of its own.
The repository root also holds a Project.toml, which is the Julia package definition, a CITATION.bib alongside the paper reference, a LICENSE.md, and a CLAUDE.md. There is a `.buildkite` directory for continuous integration alongside the GitHub workflows that the README badge points at, and separate src and test directories for the code and its tests.
The README documents use and citation, not the API
It is worth being explicit about what this README does not contain, because the absence is unusual and it shapes how you approach the project.
There are no installation instructions, no code example showing a simulation, and no description of the API surface. The library's own details live in the documentation at docs.qojulia.org, the examples under docs/examples, and the project website at qojulia.org, which the README describes as the place for more information, documentation and examples.
What the README does cover is the surrounding project. There is a Discussion and Help section that says bug reports and feature requests go to the GitHub issue tracker, and that general discussion and help belongs on the Julia Discourse forum under the quantum topic, with a `#quantum-optics` channel on the Julia Slack for real-time conversations. Contributions of any kind are welcome, whether ideas, bug reports or pull requests, and there is an Office Hours section describing a scheduling link where anyone can bring questions or suggestions.
For a numerical library that is a deliberate division of labour, and it is the norm for scientific software: the README orients you, the documentation teaches you, and the examples show you. The one thing you should not expect to find anywhere in the repository is a quick tour of the API, because the type names and function signatures are the documentation's job.
Citing the paper is part of the workflow
The Citing section asks for two things, and the first one is unusual for an open source project. If you like QuantumOptics.jl, the README asks you to star the repository to help increase its visibility, and if you find the framework useful in your research it asks you to cite the publication, with the bibtex entry included.
The entry is the Computer Physics Communications paper, QuantumOptics.jl: A Julia framework for simulating open quantum systems, by Krämer, Plankensteiner, Ostermann and Ritsch, volume 227, pages 109 to 116, 2018, published by Elsevier:
@article{kramer2018quantumoptics,
title={QuantumOptics. jl: A Julia framework for simulating open quantum systems},
journal={Computer Physics Communications},
volume={227},
pages={109--116},
year={2018},
publisher={Elsevier}
}The repository also carries a CITATION.bib at the root, so the citation is available to tooling as well as to copy and paste.
This is a small but meaningful signal about the project. A library that asks for a paper citation in its README is a library whose primary audience is academic, and the software is a means to a paper rather than the other way round. That also tells you what to expect from the documentation, which is written for readers who already know the physics, and why the examples under docs/examples matter more here than they would in a general purpose library.
Patch releases, a moving branch, and a custom licence file
The recent releases are v1.2.10 from 2026-09-11, v1.2.9 from 2026-09-06 and v1.2.8 from 2026-08-20, so the project is on a 1.2 line and shipping patch releases steadily. The repository is not archived and the last push was on 2026-10-13.
That last date is a warning rather than a promise. The README badge points at the stable documentation, and the version badge points at the releases, so the intended reading path is to install a tagged release and read the docs for that version. Working from the master branch of a Julia package that is shipping patch releases every few days is a choice with a cost, since the API can move under you between a tagged release and a branch you cloned last week.
The licence is where the repository is least clear. The licence is recorded as a custom one that GitHub cannot classify, and the LICENSE.md file at the root is the text to read. For a library published out of a research group and carrying a paper citation, a bespoke licence is not unusual, but it does mean you have to read it rather than assume a standard permissive grant, and in particular you should check what it says about commercial use and redistribution before you build a product on top of it.
There is no changelog file in the root, so the release history on the repository is the record of what changed between the patch releases.
Editorial conclusion
QuantumOptics.jl fits a physicist or graduate student who wants a Julia-native way to simulate open and closed quantum systems and who wants an example-driven API rather than a paper to implement from. It is the wrong choice if your code is in Python and already works with QuTiP, since the value here is the Julia ecosystem and the examples, not a different model. Verify first which Julia version the current release supports, since the README does not state it, and read the stable documentation at docs.qojulia.org rather than the master branch, because the repository is moving.
Frequently asked questions
What is QuantumOptics.jl?
It is a numerical framework written in Julia for simulating various kinds of quantum systems, and the repository description is more specific: a library for the numerical simulation of closed as well as open quantum systems. It is inspired by the Quantum Optics Toolbox for MATLAB and by the Python framework QuTiP.
Where are the documentation and the examples?
The documentation source is under docs/src and the examples under docs/examples, both in this repository, with the stable documentation published at docs.qojulia.org and the project website at qojulia.org. The benchmarks live in a separate QuantumOptics.jl-benchmarks repository and the website in QuantumOptics.jl-website, all under the qojulia organisation.
How do I install QuantumOptics.jl?
The README does not give installation steps. It points to the project website qojulia.org for more information, documentation and examples, and the repository root contains a Project.toml, which is the Julia package definition.
Where should I ask questions about QuantumOptics.jl?
The README says bug reports and feature requests go to the GitHub issue tracker, general discussion and help to the Julia Discourse forum under the quantum topic, and there is a #quantum-optics channel on the Julia Slack for real-time conversations. Office hours can also be scheduled on demand through a linked cal.com page.
How do I cite QuantumOptics.jl?
The README asks that you cite the publication, QuantumOptics.jl: A Julia framework for simulating open quantum systems, in Computer Physics Communications, volume 227, pages 109 to 116, 2018, and it includes the bibtex entry. A CITATION.bib file is also present at the repository root.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/qojulia-quantumoptics-jl)Was this useful?