Architecture Overview¶
How DevOpsMaestro is structured from a user's perspective.
Three Tools, One Database¶
DevOpsMaestro provides three CLI tools that share a single SQLite database at ~/.devopsmaestro/devopsmaestro.db:
| Tool | Binary | What It Manages |
|---|---|---|
| DevOpsMaestro | dvm |
Apps, workspaces, registries, git repos, credentials, CRDs |
| NvimOps | nvp |
Neovim plugins and themes |
| Terminal Operations | dvt |
Terminal prompts, plugins, and configurations |
All three tools share the same object hierarchy and context.
Object Hierarchy¶
Resources are organized in a five-level hierarchy:
| Object | Purpose |
|---|---|
| Ecosystem | Top-level platform grouping (e.g., your company or product area) |
| Domain | Bounded context within an ecosystem (e.g., a team or service area) |
| System | Logical grouping of related apps within a domain (optional) |
| App | Your codebase — the thing you build and maintain |
| Workspace | A development environment for an App (runs in a container) |
All intermediate levels (Ecosystem, Domain, System) are optional — only Workspace is required.
Context¶
Your active context determines which ecosystem, domain, system, app, and workspace commands operate on by default. Check it at any time:
Resource Types¶
DevOpsMaestro manages 13 built-in resource types:
| Resource | Kind | Purpose |
|---|---|---|
| Ecosystem | Ecosystem |
Organizational grouping |
| Domain | Domain |
Bounded context |
| System | System |
Logical app cluster within a domain |
| App | App |
Application registration |
| Workspace | Workspace |
Dev environment container |
| Credential | Credential |
Stored credentials for auth |
| Registry | Registry |
OCI/package registry config |
| Git Repository | GitRepo |
Bare git mirror |
| Neovim Plugin | NvimPlugin |
Neovim plugin definition |
| Neovim Theme | NvimTheme |
Neovim color theme |
| Neovim Package | NvimPackage |
Curated plugin bundle |
| Terminal Prompt | TerminalPrompt |
Prompt configuration |
| Terminal Package | TerminalPackage |
Terminal extension bundle |
You can also define your own resource types using Custom Resource Definitions.
How apply Works¶
The -f flag accepts files, URLs, GitHub shorthands, and stdin. When you run dvm apply -f something.yaml, DevOpsMaestro:
- Resolves the source — reads from a file, URL, GitHub path, or stdin
- Parses the YAML — detects the resource
kind - Validates and saves — validates the resource and stores it in the database
Database¶
All state is stored in a single SQLite database:
The database is automatically migrated to the latest schema on every startup. No manual migration steps are needed.
Container Runtime Detection¶
dvm automatically detects your container platform in this order:
DVM_PLATFORMenvironment variable (override)- OrbStack
- Docker Desktop
- Colima
- Podman
- containerd (nerdctl)
Check what was detected:
External Modules¶
DevOpsMaestro is built on a set of focused libraries that can also be used independently:
| Module | Purpose |
|---|---|
| MaestroNvim | Neovim plugin and theme management (nvp) |
| MaestroTheme | Theme and color palette system |
| MaestroTerminal | Terminal prompt and plugin management (dvt) |
| MaestroSDK | Shared foundation (paths, rendering, resource handling) |
| MaestroPalette | Color palette primitives |
See Also¶
- Source Types — How the
-fflag resolves sources - Theme Hierarchy — How themes cascade through the object hierarchy
- Custom Resource Definitions — Extending DevOpsMaestro with custom types
- Contributing — Contribute to development