HarborHarbor
DocumentationGuidesPlugins

Mental Model

Plugin → Tool → Run → Trace, defined once.

This page defines every load-bearing term once. Every other page in the docs uses these terms exactly as defined here.

Mermaid render failed:
org.eclipse.elk.core.UnsupportedConfigurationException: Layout algorithm 'layered' not found for Root Node root

Plugins expose Tools. Skills teach the agent when to use them. Exec runs them. Functions and Apps make Exec reusable. Every call leaves a Trace.

The objects

TermDefinitionLives in
WorkspaceTop-level isolation boundary. Owns its plugins, skills, functions, apps, traces, and members.apps/api D1
PluginA connected service Harbor knows how to talk to. Each plugin instance has a namespace (e.g. linearMcp).plugin_sources table
SourceThe technical instantiation of a Plugin in a workspace — has credentials, a state, and a set of Tools. (You'll see "plugin" in marketing copy; "source" in API responses.)plugin_sources
ToolA discoverable function exposed by a Source. Has an input schema, output schema, read/write hint.plugin_tools
SkillAgent-facing markdown that teaches an LLM when to use a tool (or set of tools) and how to wire the args.workspace_skills
ExecA one-off TypeScript run inside Harbor's cloud isolate. Triggered by hrbr exec or the MCP exec tool./plugins/execute
FunctionA named, versioned, optionally scheduled piece of TypeScript. The reusable form of Exec. Wraps defineJob. (Marketing calls them "Functions"; the code says orbit_jobs.)orbit_jobs
AppA Function exposed at a public URL with HTTP routes. deployApp.orbit_apps
RunOne execution of an Exec, Function, App-handler, or Workflow. Has a status, duration, artifacts.runs
TraceThe hierarchical record of a Run + every tool call it made.runs + run_spans

The verbs

How the objects connect to each other in practice — first the discovery

  • invocation flow, then the authoring + publish flow.

Discovery → invocation

Mermaid render failed:
org.eclipse.elk.core.UnsupportedConfigurationException: Layout algorithm 'layered' not found for Root Node root

Authoring → publish

Mermaid render failed:
org.eclipse.elk.core.UnsupportedConfigurationException: Layout algorithm 'layered' not found for Root Node root

The two vocabularies

Harbor's user-facing word for some concepts differs from the code-name. Both are valid; use the user-facing name in your code/comments unless you're specifically calling out the API contract.

User-facing (use this)Code-name (see in SDK/API)
Pluginsource
FunctionOrbit Job · defineJob
AppOrbit App · deployApp
Local MCP bridgeCliff
CLICoast → hrbr
Hosted MCP serverLighthouse

Full table: Glossary.

What's not in the mental model

  • "Workflows"not a user concept. It's an execution lane inside Exec/Functions triggered by step.* calls. Never appears in the dashboard nav as a separate thing.
  • "Triggers"not a user concept. Functions can be scheduled; Workflows can wait for events; Plugins can emit webhooks. Each is named for what it actually is, not unified under a "Triggers" word.
  • "Sand" — internal name for the local-CLI bridge. Surfaced only in the For Agents → Connecting page.