BESSER is a low-modeling low-code open-source platform. BESSER (Building bEtter Smart Software fastER) is funded thanks to an FNR Pearl grant led by the Luxembourg Institute of Science and Technology with the participation of the Snt/University of Luxembourg and open to all your contributions!
The BESSER low-code platform is built on top of B-UML our Python-based personal interpretation of a "Universal Modeling Language" (yes, heavily inspired and a simplified version of the better known UML, the Unified Modeling Language). With B-UML you can specify your software application and then use any of the code-generators available to translate your model into executable code suitable for various applications, such as Django web apps or database structures compatible with SQLAlchemy.
Beyond the deterministic generators, BESSER also offers the Spec-Driven Agent (experimental), where generation is hybrid rather than a single template pass. It runs in three phases: a deterministic generator produces a model-faithful scaffold, an LLM then customises that scaffold to satisfy a natural-language request — adding features the templates don't cover (auth, Docker, tests) or targeting stacks with no built-in generator — and finally the result is validated, with blocker-level issues driving a bounded auto-fix loop. Where a free tier is configured it runs with no API key at all; bringing your own key is optional, and a key you do supply is never stored.
This repository contains the backend foundation for the ecosystem: the
metamodel, code generators, notations, utilities, and services that drive the web modeling editor and the Python SDK. The editor's frontend is maintained in the companion BESSER-Web-Modeling-Editor repository and is included here only as a submodule (at besser/utilities/web_modeling_editor/frontend) for local deployments.
Check out the BESSER Web Modeling Editor online
Check out the official documentation
Basic Installation
BESSER requires Python 3.11+ (CI tests 3.11 and 3.12). We recommend creating a virtual environment (e.g. venv, conda).
The latest stable version of BESSER is available in the Python Package Index (PyPi) and can be installed using
$ pip install besser
BESSER can be used with any of the popular IDEs for Python development such as VScode, PyCharm, Sublime Text, etc.
Running BESSER Locally
If you are interested in developing new code generators or designing BESSER extensions, you can download and modify the full codebase, including tests and examples.
Step 1: Clone the repository
$ git clone https://github.com/BESSER-PEARL/BESSER.git
$ cd BESSER
Step 2: Create a virtual environment
Create a virtual environment and install BESSER in editable mode. The editable install (pip install -e .) is what makes besser importable from anywhere, including in IDEs such as VS Code, without configuring the PYTHONPATH.
$ python -m venv venv
$ source venv/bin/activate # Windows: venv\Scripts\activate
$ pip install -e .
To run or test the Web Modeling Editor backend, also install its requirements:
$ pip install -r besser/utilities/web_modeling_editor/backend/requirements.txt
Step 3: Run an example
To verify the setup, you can run a basic example.
$ cd tests/BUML/metamodel/structural/library
$ python library.py
Examples
If you want to try examples, check out the BESSER-examples repository!
AI Agent Skills
Working with BESSER through an AI coding agent (Claude Code, Cursor, Cline, Copilot, …)? Two companion repositories package BESSER as Agent Skills, so your agent gets the right knowledge on demand instead of loading the whole codebase into context.
BESSER Skills covers BESSER's metamodel, generators, and troubleshooting, so your agent builds correct, validated B-UML models — and viewable diagrams — without guesswork.
npx skills add BESSER-PEARL/besser-skills --all
UML Drawing is the diagrams-for-docs front door to BESSER: it turns a description or existing code into a correct UML class diagram, rendered as a real SVG/PNG straight into your README or docs.
npx skills add BESSER-PEARL/uml-drawing --all
Both follow the open Agent Skills standard, so they work with any spec-compatible coding agent.
Contributing
We encourage contributions from the community and any comment is welcome!
If you are interested in contributing to this project, please read the CONTRIBUTING.md file. You can also explore our step-by-step Contributor Guide and the dedicated AI Assistant Guide to understand the workflows and expectations before opening a pull request.
How to cite BESSER
This repository has the CITATION.cff file, which activates the "Cite this repository" button in the About section (right side of the repository). The citation is in APA and BibTex format.
Code of Conduct
At BESSER, our commitment is centered on establishing and maintaining development environments that are welcoming, inclusive, safe and free from all forms of harassment. All participants are expected to voluntarily respect and support our Code of Conduct.
Governance
The development of this project follows the governance rules described in the GOVERNANCE.md document.
Contact
You can reach us at: info@besser-pearl.org
Website: https://besser-pearl.org
License
This project is licensed under the MIT license.
Metadata
Release files for besser 8.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| besser-8.2.0.tar.gz | 1.8 MB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| besser-8.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 3.8 MB
Release files / besser-8.2.0.tar.gz
| Download URL | besser-8.2.0.tar.gz |
|---|---|
| Size | 1.8 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b0b81848f6678080e2297a50eef8d2ad62ec3c7fbb8230ddaaf8bdfac4148a6d
|
|
BLAKE2b-256 checksum How to use checksums |
b7aeb4c92aed14ecb7da4f38c07fbe461e4b5a716c852ac7b95fe637ba7ac423
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.25
|
Release files / besser-8.2.0-py3-none-any.whl
| Download URL | besser-8.2.0-py3-none-any.whl |
|---|---|
| Size | 2.0 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c2b55cc45a9f83eb4f155550aada15e5987723f128fe412440ecaa01e1ed4d3a
|
|
BLAKE2b-256 checksum How to use checksums |
1eadf2d2134da806c1328e75b59ecfb2923578be74928602d11222e97d272594
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.25
|
Security for besser 8.2.0
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.