# first-fluke/oh-my-agent architecture

> Architecture diagram of the GitHub repository first-fluke/oh-my-agent, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/first-fluke/oh-my-agent
- Repository: https://github.com/first-fluke/oh-my-agent

## Overview

oh-my-agent is a portable multi-agent harness: it configures agent runtimes, dispatches work, and checks whether claimed results are supported by project artifacts. The principal workflow runs an agent through configured hooks and gates, verifies required artifacts and criteria, and records gate decisions for later review. Skills and shared configuration are projected from `.agents/` into vendor-native layouts. The README documents these capabilities; sampled source confirms strategy dispatch, slide editing, and selected internal services, but does not expose the full harness wiring.

Main entry points: [`cli/cli.ts`](https://github.com/first-fluke/oh-my-agent/blob/main/cli/cli.ts) (OMA CLI), [`cli/commands/agent/command.ts`](https://github.com/first-fluke/oh-my-agent/blob/main/cli/commands/agent/command.ts) (Agent Commands), [`cli/commands/verify/command.ts`](https://github.com/first-fluke/oh-my-agent/blob/main/cli/commands/verify/command.ts) (Verification), [`cli/commands/harness/command.ts`](https://github.com/first-fluke/oh-my-agent/blob/main/cli/commands/harness/command.ts) (Harness Gates)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workflow["Agent Workflow"]
  node_cli["OMA CLI<br/>[cli.ts]"]
  node_agent_cmd["Agent Commands<br/>[command.ts]"]
  node_dispatch["Agent Dispatch"]
end

subgraph group_verification["Verification"]
  node_hooks["Hook Dispatch<br/>[dispatch.ts]"]
  node_verify["Verification<br/>[command.ts]"]
  node_artifact_check["Artifact Checks"]
  node_decision_check["Criterion Checks"]
  node_harness["Harness Gates<br/>[command.ts]"]
  node_event_log["Decision Log<br/>[events.ts]"]
end

subgraph group_runtime["Runtime Support"]
  node_skills["Skill Pack"]
  node_vendor_emit["Vendor Projection<br/>[types.ts]"]
  node_vendor_adapters["Runtime Adapters<br/>[index.ts]"]
end

subgraph group_shared["Shared Platform"]
  node_agent_config["Agent Config<br/>[agent-config.ts]"]
  node_context["Context Loading<br/>[context-loader.ts]"]
  node_search["Search Pipeline<br/>[pipeline.ts]"]
  node_slide_editor["Slide Editor<br/>[server.ts]"]
end

node_user(("Engineer"))
node_agent_runtime["Agent Runtime"]

node_user -->|"invokes"| node_cli
node_cli -->|"dispatches command"| node_agent_cmd
node_agent_cmd -->|"starts agents"| node_dispatch
node_dispatch -->|"runs work"| node_agent_runtime
node_agent_runtime -->|"triggers hooks"| node_hooks
node_cli -->|"runs checks"| node_verify
node_verify -->|"checks artifacts"| node_artifact_check
node_verify -->|"rechecks criteria"| node_decision_check
node_cli -->|"runs gates"| node_harness
node_harness -->|"verifies artifacts"| node_artifact_check
node_harness -->|"records decisions"| node_event_log
node_verify -->|"records decisions"| node_event_log
node_user -->|"installs skills"| node_skills
node_skills -->|"projects skills"| node_vendor_emit
node_vendor_emit -->|"targets runtimes"| node_vendor_adapters
node_agent_cmd -->|"uses configuration"| node_agent_config
node_agent_cmd -->|"loads context"| node_context

click node_cli "https://github.com/first-fluke/oh-my-agent/blob/main/cli/cli.ts"
click node_agent_cmd "https://github.com/first-fluke/oh-my-agent/blob/main/cli/commands/agent/command.ts"
click node_dispatch "https://github.com/first-fluke/oh-my-agent/blob/main/cli/io/runtime-dispatch.ts"
click node_hooks "https://github.com/first-fluke/oh-my-agent/blob/main/cli/commands/hook/dispatch.ts"
click node_verify "https://github.com/first-fluke/oh-my-agent/blob/main/cli/commands/verify/command.ts"
click node_artifact_check "https://github.com/first-fluke/oh-my-agent/blob/main/cli/state/artifact-verifier.ts"
click node_decision_check "https://github.com/first-fluke/oh-my-agent/blob/main/cli/state/decision-verifier.ts"
click node_harness "https://github.com/first-fluke/oh-my-agent/blob/main/cli/commands/harness/command.ts"
click node_event_log "https://github.com/first-fluke/oh-my-agent/blob/main/cli/state/events.ts"
click node_skills "https://github.com/first-fluke/oh-my-agent/blob/main/cli/platform/skills-installer.ts"
click node_vendor_emit "https://github.com/first-fluke/oh-my-agent/blob/main/cli/platform/emit/types.ts"
click node_vendor_adapters "https://github.com/first-fluke/oh-my-agent/blob/main/cli/vendors/index.ts"
click node_agent_config "https://github.com/first-fluke/oh-my-agent/blob/main/cli/platform/agent-config.ts"
click node_context "https://github.com/first-fluke/oh-my-agent/blob/main/cli/platform/context-loader.ts"
click node_search "https://github.com/first-fluke/oh-my-agent/blob/main/cli/commands/search/pipeline.ts"
click node_slide_editor "https://github.com/first-fluke/oh-my-agent/blob/main/cli/commands/slide/editor/server.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_cli,node_agent_cmd,node_dispatch toneBlue
class node_hooks,node_verify,node_artifact_check,node_decision_check,node_harness,node_event_log toneAmber
class node_skills,node_vendor_emit,node_vendor_adapters toneMint
class node_agent_config,node_context,node_search,node_slide_editor toneRose
class node_user,node_agent_runtime toneIndigo
```

## Components

### Agent Workflow

- [OMA CLI](https://github.com/first-fluke/oh-my-agent/blob/main/cli/cli.ts): `cli/cli.ts`
- [Agent Commands](https://github.com/first-fluke/oh-my-agent/blob/main/cli/commands/agent/command.ts): `cli/commands/agent/command.ts`
- [Agent Dispatch](https://github.com/first-fluke/oh-my-agent/blob/main/cli/io/runtime-dispatch.ts): `cli/io/runtime-dispatch.ts`

### Verification

- [Hook Dispatch](https://github.com/first-fluke/oh-my-agent/blob/main/cli/commands/hook/dispatch.ts): `cli/commands/hook/dispatch.ts`
- [Verification](https://github.com/first-fluke/oh-my-agent/blob/main/cli/commands/verify/command.ts): `cli/commands/verify/command.ts`
- [Artifact Checks](https://github.com/first-fluke/oh-my-agent/blob/main/cli/state/artifact-verifier.ts): `cli/state/artifact-verifier.ts`
- [Criterion Checks](https://github.com/first-fluke/oh-my-agent/blob/main/cli/state/decision-verifier.ts): `cli/state/decision-verifier.ts`
- [Harness Gates](https://github.com/first-fluke/oh-my-agent/blob/main/cli/commands/harness/command.ts): `cli/commands/harness/command.ts`
- [Decision Log](https://github.com/first-fluke/oh-my-agent/blob/main/cli/state/events.ts): `cli/state/events.ts`

### Runtime Support

- [Skill Pack](https://github.com/first-fluke/oh-my-agent/blob/main/cli/platform/skills-installer.ts): `cli/platform/skills-installer.ts`
- [Vendor Projection](https://github.com/first-fluke/oh-my-agent/blob/main/cli/platform/emit/types.ts): `cli/platform/emit/types.ts`
- [Runtime Adapters](https://github.com/first-fluke/oh-my-agent/blob/main/cli/vendors/index.ts): `cli/vendors/index.ts`

### Shared Platform

- [Agent Config](https://github.com/first-fluke/oh-my-agent/blob/main/cli/platform/agent-config.ts): `cli/platform/agent-config.ts`
- [Context Loading](https://github.com/first-fluke/oh-my-agent/blob/main/cli/platform/context-loader.ts): `cli/platform/context-loader.ts`
- [Search Pipeline](https://github.com/first-fluke/oh-my-agent/blob/main/cli/commands/search/pipeline.ts): `cli/commands/search/pipeline.ts`
- [Slide Editor](https://github.com/first-fluke/oh-my-agent/blob/main/cli/commands/slide/editor/server.ts): `cli/commands/slide/editor/server.ts`

### Other components

- **Engineer**
- **Agent Runtime**

## Connections

- Engineer → OMA CLI: invokes
- OMA CLI → Agent Commands: dispatches command
- Agent Commands → Agent Dispatch: starts agents
- Agent Dispatch → Agent Runtime: runs work
- Agent Runtime → Hook Dispatch: triggers hooks
- OMA CLI → Verification: runs checks
- Verification → Artifact Checks: checks artifacts
- Verification → Criterion Checks: rechecks criteria
- OMA CLI → Harness Gates: runs gates
- Harness Gates → Artifact Checks: verifies artifacts
- Harness Gates → Decision Log: records decisions
- Verification → Decision Log: records decisions
- Engineer → Skill Pack: installs skills
- Skill Pack → Vendor Projection: projects skills
- Vendor Projection → Runtime Adapters: targets runtimes
- Agent Commands → Agent Config: uses configuration
- Agent Commands → Context Loading: loads context
