Skip to content

Contributing

Thanks for helping improve omo. Short path from clone → useful PR.

Development setup

git clone https://github.com/hatembentayeb/omo.git
cd omo
# Go 1.25+ required (see go.mod)
make all          # host + plugins → ~/.omo/plugins
./omo             # or: go run ./cmd/omo

Local stacks

The Makefile still lists make dev-setup / make dev-seed, but the dev/ tree is not in the current repo. Use the playground instead:

cd ~/Work/omo-playground   # https://github.com/hatembentayeb/omo-playground
make setup
cd ~/Work/omo && make all && omo

See Playground.

Before you open a PR

  • go mod tidy
  • go vet ./...
  • Host builds: go build -o /tmp/omo ./cmd/omo
  • Touched plugins build: go build -o /tmp/p ./plugins/<name>/cmd/<name>
  • Or simply make all if you changed shared packages

CI: .github/workflows/ci.yml.

Project map

Path Role
cmd/omo Host binary + omo secrets
internal/host TUI host, RPC wiring, package manager
pkg/pluginrpc Plugin RPC contract
pkg/secrets KeePass vault (+ bootstrap reference templates)
pkg/ui Shared TUI primitives
plugins/<name> Official plugins
omo-playground (sibling repo) Local test stacks + KeePass seeds

Adding or changing a plugin

See Writing a Plugin. Document KeePass fields to match *_config.go / Configure exactly.

Commit / PR style

  • Focused commits and PRs (feat/…, fix/…, docs/…)
  • Explain why; list how you tested
  • Do not commit secrets, key files, or ~/.omo state

Docs contributions

This site lives in omo-website. KeePass schemas must match bootstrap_reference.go and plugin config comments.

Security

Private security advisory or email via oh-myops.com — do not file public issues with exploit details.

Code of conduct

Be kind, assume good intent, keep discussion technical.