A modern MERISE database modeling tool built with Python and PySide6.
- MCD Editor - Visual diagram editor for entities, associations, and links
- Drag-and-drop positioning
- Multi-selection and deletion
- Cardinalities: (0,1), (0,N), (1,1), (1,N)
- Link styles: Curved (Catmull-Rom smoothed), Orthogonal (L-routing), Straight
- Toggle attribute visibility
- Zoom controls with slider (25%-400%)
- Customizable colors for entities, associations, and links
- Link Editing (v1.6.0) - Reshape relation paths interactively
- Waypoint handles to drag bend points; segment-midpoint handles to insert new bends
- Magnetic snap during drag, orthogonal segment-axis-lock
- "Tidy Up Link" to collapse near-collinear waypoints, "Straighten Link" to wipe them all
- Draggable cardinality label position (stored as
card_tin the file format) - Curves bow outward away from the diagram centroid
- Undo / Redo (v1.6.0) - Ctrl+Z / Ctrl+Shift+Z covering every modification (drag, edit, waypoints, labels, colours, link style); snapshot-based 100-entry history
- Left Sidebar - MySQL Workbench-inspired collapsible panel (Ctrl+B)
- Minimap: bird's eye diagram overview with click-to-navigate
- Project Tree: entities and associations navigator with selection sync
- Properties Panel: view and edit selected entity, association, or link
- Link cardinality inline editing (Min/Max dropdowns)
- Edit button opens full entity/association dialog
- Bottom Output Panel - Collapsible panel (Ctrl+J)
- Dictionary: attribute overview with selection highlighting
- Validation: model validation results (F5 to validate)
- SQL Preview: auto-generated PostgreSQL DDL
- Export - Export diagrams to SVG, PNG, or PDF formats
- CLI Tool (
merisio-cli) - Command-line interface for batch processing- Validate MCD models
- Generate PostgreSQL DDL
- Inspect MLD tables
- Export diagrams (PNG, SVG, PDF) headlessly
- MLD View - Logical Data Model with table/column tree view
- Editable column names (right-click or double-click to rename)
- Custom names saved in project and used in SQL generation
- SQL Generation - PostgreSQL CREATE TABLE statements
- Project Management - Save/load projects in
.merisioJSON format (file format v2.2) - Options Menu - Show/hide attributes, link style, diagram colors
MCD Editor (v1.5.0) — e-commerce example with sidebar, central canvas, and bottom output panel
Man pages are provided for both binaries:
# Install system-wide (requires root)
sudo python build.py install-man
# Then use:
man merisio
man merisio-cli
# Uninstall
sudo python build.py uninstall-manYou can also read them directly from the source tree:
man ./man/merisio.1
man ./man/merisio-cli.1- Python 3.11+
- PySide6
Download the latest release from the Releases page.
Linux:
Merisio-x.x.x-linux-x64.tar.gz- Portable archivemerisio_x.x.x_amd64.deb- Debian/Ubuntu package
Windows:
Merisio-x.x.x-windows-x64.zip- Portable archive
From .deb package (Debian/Ubuntu):
sudo dpkg -i merisio_1.6.0_amd64.debThis installs both merisio (GUI) and merisio-cli (CLI) to /usr/bin/.
From archive:
tar -xzvf Merisio-linux-x64.tar.gz
cd Merisio-linux-x64
./Merisio # GUI
./merisio-cli # CLIgit clone https://github.com/AchrafSoltani/Merisio.git
cd Merisio
./run.sh # creates .venv on first run, then launches the GUIManual setup (any args after python main.py are forwarded by run.sh):
python3 -m venv .venv
source .venv/bin/activate # Linux/macOS — or .venv\Scripts\activate on Windows
pip install -r requirements.txt
python main.pypip install pyinstaller# Activate virtual environment
source venv/bin/activate # Linux/macOS
# or: venv\Scripts\activate # Windows
# Build both GUI and CLI (default)
python build.py build-all
# Build GUI only
python build.py build
# Build CLI only
python build.py build-cli
# Create .ico from PNG (Windows, requires ImageMagick)
python build.py ico
# Install/uninstall man pages (Linux, requires root)
sudo python build.py install-man
sudo python build.py uninstall-man
# Clean build files
python build.py cleanOutput:
dist/Merisio(GUI) anddist/merisio-cli(CLI) on Linuxdist\Merisio.exeanddist\merisio-cli.exeon Windows
Both binaries support --help and --version:
merisio --help # Print usage and exit
merisio --version # Print version and exit
merisio-cli --help # Print CLI usage and exit
merisio-cli --version # Print CLI version and exit- Create Entities - Right-click on the MCD canvas or use the toolbar to add entities
- Create Associations - Add associations to define relationships between entities
- Link Them - Connect entities to associations with cardinalities
- Use the Sidebar - Browse entities/associations in the project tree, inspect and edit properties in the properties panel
- View MLD - Switch to MLD tab to see the logical model (double-click columns to rename)
- Validate - Model > Validate (F5) or check the Validation tab in the output panel
- Generate SQL - Switch to SQL tab or check the SQL Preview tab in the output panel
- Save Project - File > Save to save your work
The merisio-cli tool allows you to work with .merisio project files from the command line, useful for CI pipelines and scripting.
merisio-cli <file.merisio> <command> [options]| Command | Description |
|---|---|
info |
Show project metadata and statistics |
validate |
Validate the MCD model (exit code 1 on errors) |
sql |
Generate PostgreSQL DDL |
mld |
Show the logical data model (MLD tables) |
export |
Export diagram to PNG, SVG, or PDF |
Examples:
# Show project info
merisio-cli project.merisio info
# Validate and fail CI on errors
merisio-cli project.merisio validate
# Generate SQL to stdout or file
merisio-cli project.merisio sql
merisio-cli project.merisio sql -o schema.sql
# View MLD tables
merisio-cli project.merisio mld
# Export diagram
merisio-cli project.merisio export --format png -o diagram.png
merisio-cli project.merisio export --format svg -o diagram.svg
merisio-cli project.merisio export --format pdf -o diagram.pdf
merisio-cli project.merisio export --format png -o diagram.png --scale 3.0| Shortcut | Action |
|---|---|
| Ctrl+N | New Project |
| Ctrl+O | Open Project |
| Ctrl+S | Save Project |
| Ctrl+B | Toggle Sidebar |
| Ctrl+J | Toggle Output Panel |
| F5 | Validate Model |
| Ctrl+1 | MCD Tab |
| Ctrl+2 | MLD Tab |
| Delete | Delete Selected |
| Ctrl+Scroll | Zoom In/Out |
| Ctrl++ | Zoom In |
| Ctrl+- | Zoom Out |
| Ctrl+0 | Fit to View |
| Ctrl+Shift+0 | Reset Zoom (100%) |
| Option | Description |
|---|---|
| Show Attributes | Toggle attribute visibility in MCD entities/associations |
| Link Style > Curved | Bezier curve links (default) |
| Link Style > Orthogonal | Right-angle links |
| Link Style > Straight | Direct line links |
| Diagram Colors | Customize colors for entities, associations, and links |
Merisio/
├── main.py # GUI entry point
├── cli.py # CLI entry point (merisio-cli)
├── build.py # Build script for PyInstaller
├── requirements.txt # Python dependencies
├── packaging/ # Linux integration files
│ ├── merisio.desktop # Desktop entry
│ ├── com.github.achrafsoltani.Merisio.yml # Flatpak manifest
│ └── com.github.achrafsoltani.Merisio.metainfo.xml # AppStream metadata
├── snap/
│ └── snapcraft.yaml # Snap package manifest
├── man/
│ ├── merisio.1 # GUI man page
│ └── merisio-cli.1 # CLI man page
├── resources/
│ └── icons/
│ ├── app_icon.svg # Vector icon
│ └── app_icon.png # PNG icon (256x256)
├── src/
│ ├── models/ # Data models (Entity, Association, Link, Project)
│ ├── views/ # UI components (Canvas, Dialogs, Views)
│ │ ├── sidebar/ # Left sidebar (Minimap, Project Tree, Properties Panel)
│ │ └── output_panel.py # Bottom output panel (Dictionary, Validation, SQL Preview)
│ ├── controllers/ # Business logic (MLD transformer, SQL generator)
│ ├── export/ # Headless diagram renderer (used by CLI)
│ └── utils/ # Utilities, constants, theme
├── tests/ # Unit tests
└── .github/
└── workflows/
└── build.yml # GitHub Actions CI/CD
Merisio uses a JSON-based project format with the .merisio extension:
{
"version": "2.1",
"metadata": {
"name": "Project Name",
"description": "Project description",
"author": "Author Name",
"created_at": "2026-01-20T10:00:00",
"modified_at": "2026-02-01T15:30:00"
},
"mcd": {
"entities": [...],
"associations": [...],
"links": [...]
},
"mld": {
"column_overrides": { "TABLE.original_col": "renamed_col" }
},
"colors": {
"entity_fill": "#E3F2FD",
"entity_border": "#1976D2",
"association_fill": "#FFF3E0",
"association_border": "#F57C00",
"link_color": "#000000"
}
}See CHANGELOG.md for version history and release notes.
GNU GPL v2
Achraf SOLTANI Email: achraf.soltani@pm.me GitHub: @AchrafSoltani
Inspired by the original AnalyseSI Java project.