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:
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=chatworkspaces only expose agents and models- If no
default_agentis 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.