Mitti Exporter is available as both a command-line tool (CLI) and a desktop application (UI). You can use it to export your data — inspections, templates, schedules, actions, and more — to multiple formats for business intelligence tools or record keeping. Available to all Premium and Enterprise customers.
For instructions on downloading and running Mitti Exporter, as well as interpreting the data output, please check out our Mitti Exporter documentation.
The Python version of Mitti Exporter is no longer being maintained. We recommend downloading this latest version for faster exporting and additional data sets.
This is a monorepo containing both the CLI and the desktop UI:
.
├── cli/ # Go CLI tool (module: github.com/SafetyCulture/mitti-exporter)
├── ui/ # Wails v2 desktop app (React + Tailwind + shadcn/ui)
│ └── frontend/ # React frontend (pnpm)
├── go.work # Go workspace linking cli/ and ui/
└── .github/ # CI workflows
The UI references the CLI as a local module via Go workspaces, so both always build against the same code.
- Go 1.23+ (toolchain 1.24.4 is fetched automatically)
- pnpm 10+ (for the UI frontend)
- Node.js 20+ (LTS)
- Wails v2 CLI (for UI development)
cd cli
# Unit tests
GOWORK=off go test ./...
# Build
GOWORK=off go build ./cmd/mitti-exporterUse GOWORK=off for CLI-only work to avoid pulling in Wails/CGO dependencies.
When adding new columns in methods that implement Columns() []string, make sure they are added at the end to preserve CSV column order in export files.
cd ui
# Dev server with hot reload
wails dev
# Production build
wails buildSQL database integration tests require running databases:
cd cli
docker-compose up -d
make integration-testsTo run with local volume:
mkdir -p ~/docker-volume/mssql
docker-compose -f docker-compose-local-volume.yml up sqlserverReleases are triggered by pushing a version tag. The CI pipeline builds CLI binaries (linux/amd64, darwin/amd64, darwin/arm64, windows/amd64) and desktop app bundles (macOS universal, Windows amd64), then publishes them as GitHub Release assets.
- Checkout
mainand pull the latest changes. - Create a tag following Semantic Versioning:
git tag -a v3.1.0 -m "Release v3.1.0"Acceptable formats:v3.1.0,v3.1.0-alpha.1,v3.1.0-beta.1 - Push the tag:
git push origin v3.1.0 - Review and publish the draft release.