Catalog · How the catalog works
MORMot2
Synopse mORMot is an Open Source Client-Server ORM SOA MVC framework for Delphi 6 up to Delphi 10.3 Rio and FPC, targeting Win/Linux for the server, and any platform for clients (including mobile or AJAX).
- ★ 733 on GitHub
Anyone may press Interesting, signed in or not. It helps others find this project.
In the Online Package Manager
Install it from inside Lazarus through Package, Online Package Manager.
README
Synopse mORMot 2 Framework
The Ultimate Open Source RTL/ToolBox in modern Object Pascal, up to a Client-Server ORM/SOA/MVC Framework

(c) 2008-2026 Synopse Informatique - Arnaud Bouchez
https://synopse.info - http://mORMot.net
Thanks to all Contributors!
NOTICE: This version 2 replaces mORMot 1.18 which is now in maintainance-only mode. Consider using mORMot 2 for any new or maintainable project.
Resources
You can find more about mORMot 2 in:
- its Official Documentation (work in progress) and AI Generated Documentation;
- the Samples Folder;
- the Thomas Tutorials;
- the Synopse Forum;
- the Synopse Blog;
- the Source Code
srcsub-folder; - the Old mORMot 1 Documentation which still mostly apply to the new version - especially the design/conceptual parts.
To discuss about mORMot, in addition to our official forum, you can join:
- the mORMot Telegram group;
- the mORMot Discord server.
Those discussion groups are not managed by Synopse, but by some mORMot 2 users: thanks a lot to them!
If you find it worth using, please consider sponsoring mORMot 2 dev if you can - and even better through sharing your own commits. :-)
Presentation
mORMot What?
Synopse mORMot 2 is the ultimate Open Source ToolBox for modern Object Pascal. It is a fully featured optimized RTL, with Client-Server ORM SOA MVC framework for Delphi 7 up to the latest revision and FPC 3.2/trunk, targeting Windows/Linux/BSD/MacOS for servers, and any platform for clients (including mobile or AJAX).

The main features of mORMot are therefore:
- An optimized cross-compiler and cross-platform JSON/UTF-8 and RTTI kernel;
- Complete and efficient Cryptography primitives (hashes, encryption, asymetric keys, X.509, PKI, OpenSSL);
- A fully features Client/Server network layer (e.g. HTTP/S, WebSockets, OpenAPI/Swagger, async servers, LDAP, DNS, ACME, TFTP, DHCP, cached proxies);
- Direct SQL and NoSQL database access (e.g. SQLite3, PostgreSQL, Oracle, MSSQL, OleDB, ODBC, MongoDB);
- ORM/ODM: objects persistence on almost any database (SQL or NoSQL);
- SOA: organize your business logic into REST services defined as
interface; - Convention-over-configuration REST/JSON router, locally or over HTTP/HTTPS/WebSockets;
- Clients: consume your data or services from any platform, via ORM/SOA APIs;
- Web MVC: publish your ORM/SOA process as responsive Web Applications;
- A lot of other reusable bricks (e.g. Unicode, network, threads, dictionaries, logging, binary serialization, variants, generics, cross-platform, pdf generation...).
Emphasizing speed and versatility, mORMot leverages the advantages of modern Object Pascal native code and easy-to-deploy solutions, reducing deployment cost and increasing ROI. It can be used:
- to add basic ORM or Client-Server features to simple applications for hobbyists,
- or let experienced users develop scalable service-based (DDD) projects for their customers,
- or leverage FPC cross-platform abilities with an existing Delphi codebase, to embrace the next decades,
- have fun and see modern Object Pascal challenge the latest languages or frameworks.
Sub-Folders
The mORMOt 2 repository content is organized into the following sub-folders:
srcis the main source code folder, where you should find the actual framework;packagescontains IDE packages and tools to setup your dev environment;staticcontains raw library.o/.objfiles needed for FPC and Delphi static linking;testdefines the regression tests of all framework features;resto compile some resources used withinsrc- e.g. thestaticthird-party binaries;docholds the documentation of the framework;docsholds the AI-generated documentation of the framework;excontains various samples.
Feel free to explore the source, and the inlined documentation.
MPL/GPL/LGPL Three-License
The framework is licensed under a disjunctive three-license giving you the choice of one of the three following sets of free software/open source licensing terms:
- Mozilla Public License, version 1.1 or later;
- GNU General Public License, version 2.0 or later;
- GNU Lesser General Public License, version 2.1 or later.
This allows the use of our code in as wide a variety of software projects as possible, while still maintaining copy-left on code we wrote. See the full licensing terms.
Quick Start
Compiler targets
The framework source code:
- Tries to stay compatible with FPC stable and Delphi 7 and up;
- Is currently validated against FPC 3.2.3 (fixes-3_2), Delphi 7, 2007, 2009, 2010, XE4, XE7, XE8, 10.4, 11.1, 12.2, 12.3, 13.1 and 13.2;
- Regression tests are built and run nightly from FPC fixes-3_2 to most versions of Windows 7-11, and several Linux and MacOS distributions on i386/x86_64/arm32/aarch64.
Note that FPC 3.2.2 has a regression with variant late binding - ensure you use the FPC fixes-3_2 branch.
On Delphi, Windows is the primary target, but since mORMot 2.5, there is preliminary support of latest Delphi LLVM compilers: feedback is welcome.
Please submit pull requests for non-validated versions.
Installation
- Get the source, Luke!
- By cloning the repository (preferred):
git clone https://github.com/synopse/mORMot2.gitinto e.g.c:\github\mORMot2,- and download and extract latest https://synopse.info/files/mormot2static.tgz or https://synopse.info/files/mormot2static.7z into
c:\github\mORMot2\static.
- or as direct download of a given release (e.g. for a build script):
- Download a Source code (zip) release from https://github.com/synopse/mORMot2/releases and extract it e.g. into
d:\mormot2, - and download and extract its associated
mormot2static.tgzormormot2static.7zfile content intod:\mormot2\static.
- Download a Source code (zip) release from https://github.com/synopse/mORMot2/releases and extract it e.g. into
- By cloning the repository (preferred):
- Setup your favorite IDE:
- On Lazarus:
- Just open and compile the
/packages/lazarus/mormot2.lpkpackage; - and
mormot2ui.lpkif needed.
- Just open and compile the
- On Delphi:
- Create a new environment variable
mormot2with full path to your mORMot 2srcsub-folder (Tools - Options - IDE - Environment Variables), e.g.c:\github\mORMot2\srcord:\mormot2\srcdepending on step 1; - Add the following string to your IDE library paths (for all target platforms, i.e. Win32 and Win64):
$(mormot2);$(mormot2)\core;$(mormot2)\lib;$(mormot2)\crypt;$(mormot2)\net;$(mormot2)\db;$(mormot2)\rest;$(mormot2)\orm;$(mormot2)\soa;$(mormot2)\app;$(mormot2)\script;$(mormot2)\ui;$(mormot2)\tools;$(mormot2)\misc - There is no IDE or UI package needed (yet).
- Create a new environment variable
- On Lazarus:
- Discover and enjoy:
- Open and compile
test/mormot2tests.dprin the IDE, and run the regression tests on your machine. - Browse the examples folder (work in progress) - especially Thomas Tutorials which are realistic and pedagogical.
- Start from an example, and follow the documentation.
- Feel free to contribute by posting enhancements and patches to this quickly evolving project.
- Open and compile
For safety, the SHA-256 checksums of the current version of the downloaded binary files, as published in our https://synopse.info/files server, are available in this repository static/dev.sha256 file.
Coming From Version 1.18
Why Rewrite a Working Solution?
The mORMot framework stayed in revision 1.18 for years, and is was time for a full refactoring.
The main refactoring points tried to better follow SOLID principles:
- Switch to a more rigorous versioning policy, with regular releases;
- Split main big units (
SynCommons.pas,mORMot.pas) into smaller scope-refined units; - OS- or compiler- specific code separated to ease evolution;
- Rename confusing types, e.g.
TSQLRecordintoTOrm,TSQLRestintoTRest...; - Favor composition over inheritance, e.g.
TRestclass split into proper REST/ORM/SOA classes - and folders; - Circumvent compiler internal errors on Delphi, e.g. changed untyped const/var changed into pointers, or reduced the units size;
- Full rewrite of the whole RTTI, JSON and REST cores, for better efficiency and maintainability;
- Optimization of the framework
asmkernel, using AVX2 if available; - New features like OpenSSL, libdeflate or QuickJS support;
- New asynchronous HTTP and WebSockets servers, with optional HTTPS/TLS support via Let's Encrypt;
- Introduce modern syntax like generics or enumerators - but optional for compatibility.
We therefore created a whole new project and repository, since switching to version 2 induced some backward uncompatible changes. New unit names were used, to avoid unexpected collision issues during migration, or if 1.18 is to remain installed for a compatibility project.
Upgrade In Practice
Quick Steps when upgrading from a previous 1.18 revision:
- Note all units where split and renamed, and some breaking changes introduced for enhanced features, therefore a direct update is not possible - nor wanted
- Switch to a new folder, e.g. #\lib2 instead of #\lib
- Download latest 2.# revision files as stated just above
- Change your references to mORMot units:
- All unit names changed, to avoid collision between versions;
- Look at the samples to see the main useful units.
- Consult the documentation about breaking changes from 1.18, mainly:
- Units refactoring (see point 4 above);
- Types renamed in
PUREMORMOT2mode; - Delphi 5-6 and Kylix compatibility removed;
- BigTable, LVCL, RTTI-UI deprecated.

