How marmotdata/marmot works
Marmot is a governed data catalog and query gateway: source plugins discover metadata, which users and agents can search, understand, trace, and query under access controls. The main entry points are the web/API, CLI, SDKs, and MCP server; ingestion and OpenLineage populate catalog state, while PostgreSQL backs the application. README statements support the product-level workflow links; source excerpts support the server wiring, ingest behavior, MCP service dependencies, plugin updates, and operator reconciliation shown here. Some unsampled subsystem links are intentionally omitted.
Main entry points: v1/server.go HTTP API · mcp/server.go MCP server · plugins Source plugins · service.go Governed SQL
Components 21
Access and interfaces
- Web interface
internal/api/v1/ui/handler.go - HTTP API
internal/api/v1/server.go - CLI
internal/cmd/root.go - Go SDK
sdk/go/internal/gen/client/query/query_client.go - MCP server
internal/mcp/server.go
Catalog and governance
- Asset catalog
internal/core/asset/service.go - Lineage
internal/core/lineage/service.go - Glossary
internal/core/glossary/service.go - Data products
internal/core/dataproduct/service.go - Teams and ownership
internal/core/team/service.go
Ingestion and pipelines
- Ingest workflow
internal/cmd/ingest.go - Source plugins
plugins - Plugin updates
internal/plugin/updates/manager.go - Run operator
internal/operator/controller/run_controller.go
Search and governed queries
- Catalog search
internal/core/search/service.go - Governed SQL
internal/core/dataquery/service.go - Query language
internal/query/query.go
Runtime and persistence
- PostgreSQL
internal/store/postgres/setup.go - Identity and access
internal/core/auth/service.go
Other components
- People
- AI agents
Connections 29
- People → Web interface: use
- People → CLI: use
- People → Go SDK: use
- AI agents → MCP server: connect
- Web interface → HTTP API: request
- CLI → HTTP API: request
- Go SDK → HTTP API: request
- MCP server → Catalog search: searches
internal/mcp/server.go - MCP server → Lineage: traces
internal/mcp/server.go - MCP server → Glossary: looks up
internal/mcp/server.go - MCP server → Data products: explores
internal/mcp/server.go - MCP server → Governed SQL: queries
internal/mcp/server.go - HTTP API → Asset catalog: serves catalog
internal/api/v1/server.go - HTTP API → Lineage: serves lineage
internal/api/v1/server.go - HTTP API → Glossary: serves glossary
internal/api/v1/server.go - HTTP API → Data products: serves products
internal/api/v1/server.go - HTTP API → Catalog search: serves search
internal/api/v1/server.go - HTTP API → Governed SQL: serves queries
internal/api/v1/server.go - Ingest workflow → HTTP API: starts runs
internal/cmd/ingest.go - Ingest workflow → Source plugins: runs source
internal/cmd/ingest.go - Source plugins → Asset catalog: populate metadata
- Source plugins → Lineage: provide lineage
- HTTP API → PostgreSQL: persists state
- Governed SQL → Identity and access: checks roles
- Governed SQL → PostgreSQL: records audit
- Catalog search → Query language: supports filters
- Plugin updates → Source plugins: switches versions
internal/plugin/updates/manager.go - Run operator → PostgreSQL: reconciles run state
- Asset catalog → PostgreSQL: stores assets