AltarDocker
Deploy MongoDB, MinIO, Omniboard, and AltarExtractor with Docker Compose.
Web app to connect to your MongoDB experiments and open Omniboard in one click.
Open your Sacred experiment databases in Omniboard via a simple web interface.
Download the latest platform-specific launcher from Altar Releases and run it.
cd AltarViewer
python -m venv venv
venv\Scripts\activate # Windows
# source venv/bin/activate # macOS/Linux
pip install -r requirements.txt
python -m src.main
From the monorepo, open the AltarViewer folder and run the Python application in a virtual environment.
# Windows: Launch Docker Desktop and wait until it's ready
# Tip: look for the green/Ready status in the tray
# Linux (Docker Engine):
sudo systemctl start docker
# Linux (Docker Desktop):
systemctl --user start docker-desktop
# Verify Docker is available:
docker version
Ensure Docker is running before launching Omniboard. If Docker isn't ready, the launch will fail.
Choose between connecting by port (default: 27017), by full MongoDB URL or by credentials, then click Connect to list databases.
Select a database and click Launch Omniboard. Open Omniboard using the links shown in the AltarViewer UI.
Deploy MongoDB, MinIO, Omniboard, and AltarExtractor with Docker Compose.
Browse and filter Sacred experiments with a modern web UI.
Send experiments to Sacred and artifacts to MinIO.
Note: AltarViewer is part of the Altar monorepo. You can either download a prebuilt executable from the monorepo releases or build and run from source.
A graphical user interface application for launching and managing Omniboard instances to visualize and track MongoDB-backed experiments from the DREAM/Altar ecosystem.
You can use any of these options:
Prebuilt executables for Windows, macOS, and Linux are attached to the monorepo’s Releases.
1) Download
2) Run
.\AltarViewer.exe
chmod +x ./AltarViewer
./AltarViewer
3) Optional CLI usage
git clone https://github.com/DreamRepo/Altar.git
cd Altar/AltarViewer
python -m venv venv
# Activate the venv (one of these)
venv\Scripts\activate # Windows
source venv/bin/activate # macOS/Linux
pip install -r requirements.txt
python -m src.main
systemctl --user start docker-desktopLaunch the application (using any install option above)
27017 for localhost)mongodb://host:27017/yourdb) and enter username/password/auth_source separately from the following schemes: mongodb+srv://user:pass@my-cluster.mongodb.net/?retryWrites=true&w=majority, mongodb://username:password@host:27017/?authsource=db_name
-m host:port:database
localhost or 127.0.0.1, the app maps it so the Docker container can reach your host MongoDB:
host.docker.internal172.17.0.1 (Docker bridge gateway)--mu <uri-with-db>
--mu "mongodb+srv://user:pass@MONGO_IP/DB_NAME?authsource=DB_NAME"git clone https://github.com/DreamRepo/Altar.git
cd Altar/AltarViewer
python -m venv venv
source venv/bin/activate # or venv\Scripts\activate on Windows
pip install -r requirements.txt
pip install -r requirements-dev.txt
# Run all tests
pytest
# Run with coverage
pytest --cov=src --cov-report=html
# Run specific test file
pytest tests/test_mongodb.py
# Run with verbose output
pytest -v
Build a standalone executable using PyInstaller:
# Install PyInstaller (if not in requirements-dev.txt)
pip install pyinstaller
# Build executable
pyinstaller AltarViewer.spec
# Output will be in dist/ directory
Edit AltarViewer.spec to customize:
AltarViewer/
├── src/
│ ├── main.py # Application entry point
│ ├── gui.py # GUI implementation (CustomTkinter)
│ ├── mongodb.py # MongoDB connection logic
│ ├── omniboard.py # Docker/Omniboard management
│ └── prefs.py # Secure preferences (JSON + OS keyring)
├── tests/
│ ├── conftest.py # Pytest configuration
│ ├── test_mongodb.py # MongoDB tests
│ └── test_omniboard.py # Omniboard tests
├── assets/ # Images and resources
├── requirements.txt # Production dependencies
├── requirements-dev.txt # Development dependencies
└── AltarViewer.spec # PyInstaller specification
The application uses a deterministic hash-based port assignment:
port = 20000 + (SHA256(database_name) % 10000)
This ensures:
We welcome contributions! Please follow these guidelines:
git clone https://github.com/YOUR_USERNAME/Altar.git
cd Altar/AltarViewer
git checkout -b feature/your-feature-name
pytest
git add .
git commit -m "feat: add your feature description"
Use Conventional Commits:
feat: New featurefix: Bug fixdocs: Documentation changestest: Test additions or changesrefactor: Code refactoringchore: Maintenance tasksgit push origin feature/your-feature-name
Problem: “Connection Error” when connecting to MongoDB
Solutions:
mongosh or mongoProblem: Docker-related errors when launching Omniboard
Solutions:
docker psNote: In Port mode, the app automatically maps localhost/127.0.0.1 so containers can reach MongoDB running on the host:
host.docker.internal172.17.0.1Common causes:
localhost from the host OS is unreachable from inside Docker (Windows/macOS)What the app does:
--mu, preserving credentials/optionsWhat to check:
mongosh and ensure it has read access to the selected DBSome deployments (e.g., MongoDB Atlas or non-admin users) do not allow the listDatabases command. In that case, the app falls back to the database present in your connection URI so you can still launch Omniboard for it.
Problem: “Port already in use” errors
Solutions:
docker ps
docker stop <container_id>
Note: Each database consistently uses the same port (hash-based), allowing your browser to remember Omniboard customizations and preferences per database
Problem: Missing module errors when running from source
Solutions:
pip install -r requirements.txtIf the “Save password securely” option is disabled or your password does not reappear:
keyring package is installed in your environment: pip install keyringOlder versions saved preferences at ~/.altarviewer_config.json, which could be affected if the HOME environment variable was overridden (e.g., by certain shells/tools) while running inside a repository folder. The app now stores preferences in the standard OS config location (e.g., %APPDATA%\AltarViewer\config.json on Windows) using platformdirs, so it no longer depends on the current working directory or HOME. Existing legacy configs are read for compatibility but new saves go to the stable location.
This component is part of the Altar monorepo. Releases are published on the monorepo. You can either download the compiled binaries or build from source.
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.