
A simple, fast CLI tool for spinning up data infrastructure services using Docker or Podman.
[!NOTE] Check out the demo UI
curl -fsSL https://raw.githubusercontent.com/data-catering/insta-infra/main/install.sh | sh
OR
wget -q -O - https://raw.githubusercontent.com/data-catering/insta-infra/main/install.sh | sh
# Add the tap and install
brew tap data-catering/insta-infra
brew install insta-infra
# Clone the repository
git clone https://github.com/data-catering/insta-infra.git
cd insta-infra
make install
go install github.com/data-catering/insta-infra/v2/cmd/insta@v3.0.0
If you prefer to install manually from release archives:
insta-v3.0.0-darwin-arm64.tar.gzinsta-v3.0.0-darwin-amd64.tar.gzinsta-v3.0.0-linux-arm64.tar.gzinsta-v3.0.0-linux-amd64.tar.gzinsta-v3.0.0-windows-arm64.zipFor Windows Intel: insta-v3.0.0-windows-amd64.zip
Extract the archive: ```bash # For .tar.gz files tar -xzf insta-v3.0.0--.tar.gz
# For .zip files (Windows) unzip insta-v3.0.0-windows-.zip ```
# For Windows (PowerShell as Administrator) Move-Item insta.exe C:\Windows\System32\ ```
bash
chmod +x /usr/local/bin/insta# List available services
insta -l
# Start a service
insta postgres
# Start multiple services
insta postgres mysql elasticsearch
# Start a service with persistent data
insta -p postgres
# Connect to a running service
insta -c postgres
# Shutdown services
insta -d postgres
# Shutdown all services
insta -d
# Explicitly start a service in docker or podman
insta -r docker postgres
insta -r podman postgres
# Add a custom service defined in a docker compose file
insta custom add my-custom-docker-compose.yaml
# Run a custom service
insta my-custom-service
# List custom services
insta custom list
# Validate a custom service defined in a docker compose file
insta custom validate my-custom-docker-compose.yaml
# Show help
insta -h
# Show version
insta -v
insta --ui
If Docker or Podman is installed in a non-standard location, you can specify custom paths using environment variables:
# Custom Docker path
export INSTA_DOCKER_PATH="/path/to/docker"
insta postgres
# Custom Podman path
export INSTA_PODMAN_PATH="/path/to/podman"
insta -r podman postgres
This is particularly useful for: - macOS GUI applications: When Docker/Podman isn't in the standard PATH - Custom installations: When using alternative installation methods - Enterprise environments: When binaries are in non-standard locations - Development setups: When testing with different container runtime versions
insta-infra automatically searches for Docker and Podman in these common locations:
/usr/local/bin/docker, /opt/homebrew/bin/docker, /Applications/Docker.app/Contents/Resources/bin/docker/usr/bin/docker, /usr/local/bin/docker, /opt/docker/bin/docker, /snap/bin/docker, /var/lib/flatpak/exports/bin/dockerC:\Program Files\Docker\Docker\resources\bin\docker.exe, C:\ProgramData\chocolatey\bin\docker.exe, C:\tools\docker\docker.exe/usr/local/bin/podman, /opt/homebrew/bin/podman/usr/bin/podman, /usr/local/bin/podman, /opt/podman/bin/podman, /snap/bin/podman, /var/lib/flatpak/exports/bin/podmanC:\Program Files\RedHat\Podman\podman.exe, C:\ProgramData\chocolatey\bin\podman.exe, C:\tools\podman\podman.exeBy default, all data is stored in memory and will be lost when the containers are stopped. To enable persistence, use the -p flag:
insta -p postgres
This will store data in ~/.insta/data/<service_name>/persist/.
.
├── cmd/
│ ├── insta/ # Main CLI application
│ │ ├── container/ # Container runtime implementations
│ │ ├── resources/ # Embedded resources
│ │ │ ├── data/ # Service configuration files
│ │ │ └── *.yaml # Docker compose files
│ │ ├── models.go # Service definitions
│ │ └── main.go # CLI entry point
│ └── insta/ # Web UI application (Browser-based)
│ ├── frontend/ # React frontend
│ │ ├── src/ # React components and styles
│ │ └── dist/ # Built frontend assets
│ ├── webserver.go # HTTP API server
│ └── main.go # Web UI entry point
├── internal/
│ └── core/ # Shared business logic
│ ├── models.go # Service definitions (shared)
│ └── service.go # Service management logic
├── tests/ # Integration tests
├── docs/ # Documentation and images
├── Makefile # Build and development tasks
└── README.md # Documentation
cmd/insta/make testmake build./instacd cmd/insta/frontend && npm installmake dev-webcmd/insta/webserver.gocmd/insta/frontend/src/internal/core/make build-web# Install all dependencies
make deps
# Run all tests
make test
# Build both CLI and Web UI
make build-all
# Clean build artifacts
make clean
docker-compose.yamlinternal/core/models.gocmd/insta/resources/data/<service_name>/| Service Type | Services |
|---|---|
| Api Gateway | kong |
| Cache | redis |
| Change Data Capture | debezium |
| Code Analysis | sonarqube |
| Data Annotation | argilla, cvat, doccano, label-studio |
| Data Catalog | amundsen, datahub, lakekeeper, marquez, openmetadata, polaris, unitycatalog |
| Data Collector | fluentd, logstash |
| Data Visualisation | blazer, evidence, grafana, metabase, redash, superset |
| Database | cassandra, cockroachdb, elasticsearch, influxdb, mariadb, milvus, mongodb, mssql, mysql, neo4j, opensearch, postgres, qdrant, spanner, sqlite, timescaledb, weaviate |
| Distributed Coordination | zookeeper |
| Distributed Data Processing | flink, ray |
| Feature Store | feast |
| Identity Management | keycloak |
| Job Orchestrator | airflow, dagster, mage-ai, prefect |
| ML Platform | mlflow |
| Messaging | activemq, kafka, nats, pulsar, rabbitmq, solace |
| Monitoring | loki, prometheus |
| Notebook | jupyter |
| Object Storage | minio |
| Query Engine | duckdb, flight-sql, presto, trino |
| Real-time OLAP | clickhouse, doris, druid, pinot |
| Schema Registry | confluent-schema-registry |
| Secret Management | vault |
| Test Data Management | data-caterer |
| Tracing | jaeger |
| Web Server | httpbin, httpd |
| Workflow | maestro, temporal |
$ claude mcp add insta-infra \
-- python -m otcore.mcp_server <graph>