Skip to content

Workspace

The workspace is the primary capability boundary. When a user opens a project, the runtime auto-discovers all capabilities from the project root -- no global configuration required.

Workspace Kinds

Kind Description Capability Scope
project Standard project workspace Full: agents, models, actions, skills, tools, hooks
chat Read-only conversational workspace Agents + models only; no tool or hook execution

The chat vs project distinction is determined by the server at registration time, not declared by the workspace itself. The server can designate a chat directory via paths.chat_dir; each subdirectory is auto-registered as kind=chat.

Directory Structure

Full structure:

workspace/
  AGENTS.md
  .openharness/
    settings.yaml
    data/
      history.db
    agents/
      planner.md
      builder.md
      reviewer.md
    models/
      GPT.yaml
      Kimi-K25.yaml
    actions/
      code-review/
        ACTION.yaml
      run-tests/
        ACTION.yaml
    skills/
      repo-explorer/
        SKILL.md
        scripts/
        references/
      doc-reader/
        SKILL.md
    tools/
      settings.yaml
      servers/
        docs-server/
        browser/
    hooks/
      redact-secrets.yaml
      policy-guard.yaml
      scripts/
      prompts/
      resources/

Minimal viable structure:

workspace/
  AGENTS.md
  .openharness/
    settings.yaml
    agents/
      builder.md
    models/
      openai.yaml

Auto-Discovery

The runtime scans these paths at run startup:

Path Purpose
AGENTS.md Project description, injected into system prompt
.openharness/settings.yaml Main config entry point
.openharness/agents/*.md Agent definitions
.openharness/models/*.yaml Model entries
.openharness/actions/*/ACTION.yaml Action definitions
.openharness/skills/*/SKILL.md Skill definitions
.openharness/tools/settings.yaml MCP tool server registry
.openharness/tools/servers/* Local tool server code
.openharness/hooks/*.yaml Hook definitions

Info

.openharness/data/ is a runtime-managed directory and is not part of capability discovery. history.db is an async mirror, not a source of truth. kind=chat workspaces do not create this database.

Merge rules:

  • Platform built-in agents and workspace agents merge into a visible catalog; workspace wins on name conflict
  • Platform and workspace model entries merge (no override)
  • Agents must reference models via explicit model_ref
  • Explicit parameters can only select from the current catalog, not extend it
  • kind=chat workspaces only expose agents and models
  • If no default_agent is declared and the caller does not specify one, a config error is returned

FAQ

What is the core difference between chat and project?

Execution strategy. project can assemble and execute tool capabilities. chat provides static conversation only and never enters the execution backend.

Why is .openharness/data/ excluded from config parsing?

It is a runtime-managed directory. history.db is an async mirror, not a source of truth.