omh / oh my harness

The environment around your coding agent

Your agent’s environment,
already set up.

Rules, skills, MCP servers, a code graph, and shared project knowledge. omh wires them together for each repo, so you can give Claude Code a task without assembling its environment first.

Sandboxed from your host. Commands run in a container, with host files kept out by default.

brew install mindsers/tap/omh

macOS + Linux · Requires Docker and git

Open sourceMIT licensedv0.14.1 · Early release

Your project environment$ omh init
  • Your configuration

    Rules, skills, MCP servers, and hooks, in the places your agent expects.

  • A code graph

    Symbols, callers, and dependencies the agent can look up, indexed for each session.

  • A shared knowledge graph

    Project decisions and findings available to the next session.

Ready for the sessions you start

session 01session 02next session →

Shared project knowledge. A separate Docker sandbox and code index for each session.

Start with omh new claude

The setup you don’t have to repeat

Set up the project once.
Every session starts with context.

You shouldn’t have to install graph tools, connect MCP servers, and configure project memory every time you start a repo. Run omh init. omh handles that wiring.

Code graph

A map of the code you’re working on.

Give your agents a way to find symbols, trace callers, and follow dependencies. omh configures the code graph for the project and indexes each session’s own workspace, refreshing it after every agent turn.

Questions the agent can investigate

“Who calls this function?”
“What depends on this module?”

Shared knowledge graph

Project knowledge that survives a session.

Keep decisions, conventions, and earlier findings available to the next agent. Sessions in the same repository share project knowledge, so useful discoveries don’t disappear when a session ends.

An example of knowledge worth keeping

“This API still has older clients. Keep the existing response fields.”

Start the next task with the code tools and project knowledge already connected.

The rest of your working environment

Your tools come with you.

rules / skills / MCP

Your setup, declared once.

Keep rules, skills, MCP servers, commands, and hooks in one place. omh puts them where the agent reads them. Export the raw config with omh eject whenever you want.

omh s01 attach

Your editor, in the same environment.

Open VS Code, Zed, Cursor, or Neovim over SSH. Inspect or change the code yourself, with the same files and dependencies your agent uses.

omh s

Keep track of work in progress.

See your sessions, their state, and overlapping file changes in one place. Each session has its own workspace and git repository; you choose which changes to bring back.

Fewer setup decisions

Automatic setup.
Inspect every choice.

omh init reads your manifests, README, and git history to configure the project. Use omh why to see why an entry was selected and how to remove it.

Read about configuration
~/code/your-project init excerpt
$ omh init
…
  stack      rust (from Cargo.toml)
  hooks      2 selected  (6 more in your catalogue)
  provision  rust/linker
  provision  rust/toolchain
  memory     2 notes written, 0 already there
…
Expand the captured setup output
~/code/your-project omh init
$ omh init
building omh/claude:03cc8005caa6e532 — first run only…
…
omh init — decided, asked nothing

  harness    claude  (found on your host)
  image      omh/claude:03cc8005caa6e532
  image      omh/claude:d06de6ac8cb6e58c (this repo's toolchain)
  stack      rust (from Cargo.toml)
  hooks      2 selected  (6 more in your catalogue)
  provision  rust/linker
  provision  rust/toolchain
  memory     2 notes written, 0 already there
  graph      indexing in background → omh-cache-your-project-8cd1eb33

  …
  omh why <name>  what it costs, what was considered instead, how to remove it

  …

Your first session

Pick a small task. Follow it through.

A failing test is a good place to start. Here’s the workflow, from an existing repo to a branch ready for review.

  1. 01 / Set up

    Bring your repo.

    In your project directory, let omh detect the stack, configure the graph tools, and build the environment. Then sign in to Claude.

    omh init
    omh auth claude --name personal

    The first image build takes longer. Later runs use the cache.

  2. 02 / Delegate

    Start Claude. Give it the task.

    Your configuration, code graph, and shared project knowledge are available in the session. Ask Claude to fix the test and run the suite.

    omh new claude

    Want to take a look yourself? Open the same environment with omh s01 attach.

  3. 03 / Review

    Keep the changes you want.

    Back in a host terminal, read the patch. When you’re happy, commit to the session branch and push it for review.

    omh s01 diff -p
    omh s01 commit -m "Fix parser test"
    omh s01 push fix/parser-test

These are example commands. Replace s01 with your session ID from omh s. Committing runs your repo’s checks in the sandbox; your checkout changes only when you merge.

See captured review output from a sample repository
~/code/your-project captured output
$ omh s01 diff
 README.md   | 2 +-
 src/main.rs | 6 +++++-
 2 files changed, 6 insertions(+), 2 deletions(-)

$ omh s01 commit -m "Add a greeting"
checks passed (3)
committed to omh/s01 (1 commit on the branch)

$ omh s
  s01  omh/s01  up  1 to push

A sandbox on your computer

Give it a workspace.
Keep your computer out of reach.

The agent’s shell runs inside a Docker container, not directly on your host. It can install dependencies, run tests, and change files in its workspace without giving it general access to your computer.

Your home directory, personal documents, and other projects aren’t exposed by default. The session gets its project workspace and the configuration, credentials, and extra files you make available to it.

Your checkout is never mounted either. Review the agent’s changes on the host and merge only what you want.

What is shared with the sandbox?
Your host computer

Your system. Your personal files.

Home directory · other projects · your original checkout

you review & merge
Docker sandbox / omh/s01

The agent works here.

Commands · dependencies · code changes · its own git repository

Before you install

A few useful details.

omh is an early project. Here’s what works today and what to expect.

Current limitations
Why use omh instead of running Claude Code directly?

omh sets up the environment around Claude Code: your configuration, a code graph, shared project knowledge, and an isolated place to work. You get those tools connected for each project, plus a way to review and bring back changes.

Do I have to configure the graphs for each project?

Run omh init in each repository. omh sets up the code graph and project memory and connects them to your sessions. You can inspect its choices with omh why and change the configuration. Project knowledge is shared between sessions of the same repository.

How does authentication work?

Run omh auth claude --name personal to use Claude’s own login flow. omh stores the login locally under ~/.omh/creds/ for use by sessions. You can keep separate personal and work accounts. Account setup.

Can the agent access files on my computer?

The agent’s shell runs in the container. Your home directory, other projects, and original checkout are not mounted by default. The session does receive its separate worktree, selected configuration, and account credentials. Extra untracked files such as .env.local must be explicitly listed in carry_in to be copied into it. Docker network access is unrestricted. Session details.

What happens if I close the terminal?

The agent keeps running. Use omh s01 resume to return. Stopping a session with omh s01 down keeps its worktree and branch. Review or save any work you want before removing a session. Session lifecycle.

Which agents and runtimes are supported?

Claude Code on Docker is the workflow verified through real work today. Adapters for other agents exist, but do not yet have the same validation. Start with Claude Code and Docker. See the current status.

Is omh free?

omh is open source under the MIT license. You still need your own access to Claude Code; omh does not include model usage. Browse the source.

Try it on your repo

Get your agent’s environment ready.

Initialize a repo. Start a session with your tools and project context in place.

You’ll need Docker running, git, a repository, and access to Claude Code. macOS and Linux · arm64 and x86_64.

1. Install omh

With Homebrew

brew install mindsers/tap/omh

Update later with brew upgrade omh.

Without Homebrew
curl -fsSL https://ohmyharness.sh/install.sh | sh

The installer checks the download against the release checksums. Read the script or build from source.

2. Open a terminal in your repo

omh init
omh auth claude --name personal
omh new claude

Give Claude a task when the session opens. Run omh doctor if setup needs a check.

Full first-session guide