Website • Quick Start • Plugins • KeePass Setup • Contributing
omo is an operations dashboard that runs entirely in your terminal. Instead of juggling browser tabs, CLI tools, and dashboards, omo gives you a single keyboard-driven interface to manage your entire infrastructure.
One binary. One KeePass file. Every service you run.
curl -fsSL https://raw.githubusercontent.com/hatembentayeb/omo/main/install.sh | bashThis downloads the latest release binary and creates the ~/.omo/ directory.
omoOn first launch, omo automatically:
- Generates a master key file at
~/.omo/keys/omo.key - Creates a KeePass database at
~/.omo/secrets/omo.kdbx(secured by the key file)
No password prompts, no manual setup. The key file authenticates everything.
Important: Back up
~/.omo/keys/omo.key— it's the only way to unlock your secrets database. If you lose it, you lose access to all stored credentials.
Once inside omo:
- Press
pfrom the plugins list (or Tab to the bottom actions list and select Package Manager) - Press
Sto sync the plugin index from GitHub - Press
Ato install all plugins - Press
Qto go back
All plugin configurations live in the KeePass database. The path structure is:
<plugin-name>/<environment>/<instance-name>
Open the KeePass database with KeePassXC (using the key file for authentication):
- Open
~/.omo/secrets/omo.kdbxin KeePassXC - When prompted, select Key File and point to
~/.omo/keys/omo.key - Inside the
omoroot group, create a group hierarchy: e.g.redis→development - Create an entry named
localwith:- URL:
localhost(the host) - Username: Redis ACL username (leave empty if none)
- Password: Redis password (leave empty if none)
- Add a custom attribute
port=6379
- URL:
Plugins also auto-create placeholder entries on first run to guide you.
Select the plugin from the sidebar — it auto-discovers your KeePass entries and connects.
┌──────────────────────────────────────────────┐
│ KeePass (secrets/omo.kdbx + keys/omo.key) │
│ └── redis/production/cache-01 │
│ └── docker/development/local │
│ └── kafka/staging/cluster-1 │
│ └── ... │
└──────────────┬───────────────────────────────┘
│ pluginapi.Secrets()
┌──────────────▼───────────────────────────────┐
│ omo (host binary) │
│ ├── Auto-bootstrap KeePass on first run │
│ ├── Plugin loader │
│ ├── Tab/Shift+Tab panel cycling │
│ └── Per-plugin logging (~/.omo/logs/) │
└──────────────┬───────────────────────────────┘
│ plugin.Open()
┌──────────────▼───────────────────────────────┐
│ Plugins (.so shared libraries) │
│ redis.so docker.so kafka.so ... │
└──────────────────────────────────────────────┘
omo ships with 12 official plugins:
| Plugin | Description | KeePass Path |
|---|---|---|
| docker | Containers, images, networks, volumes, compose | docker/<env>/<host> |
| redis | Keys, memory, clients, slowlog, pub/sub | redis/<env>/<instance> |
| kafka | Brokers, topics, partitions, consumer groups | kafka/<env>/<cluster> |
| rabbitmq | Queues, exchanges, bindings, connections | rabbitmq/<env>/<instance> |
| postgres | Databases, users, queries, replication | postgres/<env>/<instance> |
| ssh | Remote servers, execution, system monitoring | ssh/<env>/<server> |
| argocd | Applications, projects, accounts, RBAC | argocd/<env>/<instance> |
| k8suser | Kubernetes user & certificate management | k8suser/<env>/<cluster> |
| awsCosts | Cost explorer, budgets, forecasts | awsCosts/<env>/<profile> |
| s3 | Buckets, objects, upload, download | s3/<env>/<profile> |
| git | Repositories, branches, commits, diffs | git/<env>/<repo> |
| sysprocess | Processes, CPU, memory, disk, ports | (no config needed) |
omo creates and manages the KeePass database automatically. You only need to interact with it when adding or editing connections.
| File | Purpose |
|---|---|
~/.omo/secrets/omo.kdbx |
KeePass KDBX4 database (all credentials) |
~/.omo/keys/omo.key |
Master key file (auto-generated, back this up!) |
To open the database in KeePassXC, select "Key File" authentication and point to ~/.omo/keys/omo.key.
Each KeePass entry maps to a connection. Plugins use standard KeePass fields plus custom attributes:
| KeePass Field | Used For |
|---|---|
| Title | Display name |
| URL | Host / endpoint |
| UserName | Username |
| Password | Password / token |
| Notes | Description |
| Custom attributes | Plugin-specific (e.g. port, database, ssl_mode) |
Empty fields are ignored — only fill in what your service needs.
| Field | Value |
|---|---|
| Path | redis/production/cache-main |
| Title | cache-main |
| URL | redis.example.com |
| Password | your-redis-password |
Custom: port |
6379 |
Custom: database |
0 |
| Field | Value |
|---|---|
| Path | postgres/production/app-db |
| Title | app-db |
| URL | db.example.com |
| UserName | admin |
| Password | your-db-password |
Custom: port |
5432 |
Custom: database |
myapp |
Custom: ssl_mode |
require |
| Field | Value |
|---|---|
| Path | docker/development/local |
| Title | local |
| URL | unix:///var/run/docker.sock |
| Field | Value |
|---|---|
| Path | ssh/production/web-01 |
| Title | web-01 |
| URL | 10.0.1.50 |
| UserName | deploy |
Custom: port |
22 |
Custom: auth_method |
key |
Custom: private_key_path |
~/.ssh/id_ed25519 |
| Key | Action |
|---|---|
| Tab | Cycle focus: plugins → main → actions |
| Shift+Tab | Cycle focus in reverse |
| ↑ / ↓ | Navigate lists |
| Enter | Select item |
| r | Refresh plugins (when sidebar focused) |
| p | Open Package Manager (when sidebar focused) |
| Key | Action |
|---|---|
| Ctrl+T | Switch instance / connection |
| R | Refresh data |
| / | Filter / search |
| ? | Show plugin help |
| Esc | Go back |
Each plugin has its own keybindings — press ? inside any plugin to see them.
~/.omo/
secrets/
omo.kdbx KeePass database (all credentials)
keys/
omo.key Master key file (auto-generated)
index.yaml Plugin index (auto-managed)
installed.yaml Installed plugin versions
logs/
omo.log Main app log
redis.log Per-plugin logs
docker.log
...
plugins/
redis/redis.so Plugin binaries
docker/docker.so
...
git clone https://github.com/hatembentayeb/omo.git
cd omo
make allThis builds the omo binary (with version injected) and all 12 plugins, then installs everything to ~/.omo/.
- Linux (required for Go plugin
.sosupport) - Go 1.25+ (only if building from source)
- KeePassXC (optional — only needed to manually view/edit
secrets/omo.kdbx; omo manages the database automatically)
# Start Redis + Kafka containers and seed KeePass entries
make dev-setup
# Or seed only non-Docker plugins
make dev-seed| OS | Arch | Binary | Plugins |
|---|---|---|---|
| Linux | amd64 | ✅ | ✅ .so |
| Linux | arm64 | ✅ | ✅ .so |
| macOS | amd64 | ✅ | ❌ |
| macOS | arm64 | ✅ | ❌ |
| Windows | amd64 | ✅ | ❌ |
Go's
pluginbuild mode only supports Linux. macOS and Windows can run the core binary but cannot load.soplugins.
-
omo secretsCLI for managing KeePass entries without a GUI - Plugin SDK v2 with richer lifecycle hooks
- Remote plugin loading (WASM or gRPC)
- Prometheus / Grafana plugin
- Theme and color customization
- Fork the repository
- Create a feature branch (
git checkout -b feature/my-change) - Ensure
go vet ./...andgo build ./...pass - Submit a pull request
For plugin contributions, include a dev/ setup script and KeePass seed data so reviewers can test locally.
Apache License 2.0. See LICENSE for the full text.
Built by Hatem Ben Tayeb