HarborHarbor
DocumentationGuidesPlugins
Concepts

Apps (Beta)

Harbor Functions exposed through workspace-aware URLs.

Beta

Apps are a beta Harbor Cloud surface. Use the deployApp authoring global in files evaluated by hrbr inspect or hrbr exec.

An App is a small Harbor-hosted HTTP surface. You declare routes, bind them to published Functions, and publish the manifest through inspect.

Shape

feedback.app.ts
deployApp({
  name: "feedback-board",
  description: "Public feedback intake backed by a private Function.",
  jobs: {
    submit: "feedback-submit",
    list: "feedback-list",
  },
  routes: {
    "GET /": { auth: "public", job: "list" },
    "POST /": { auth: "public", job: "submit" },
    "GET /admin": { auth: "workspace_member", job: "list" },
  },
})

Publish and inspect

hrbr inspect -f ./feedback.app.ts
hrbr inspect 'return await hrbr.apps.inspect({ name: "feedback-board" })'
hrbr inspect 'return await hrbr.apps.open({ name: "feedback-board" })'

Use hrbr exec -f ./feedback.app.ts when you want the publish operation recorded as an execution run.

Auth modes

ModeWho can hit the route
workspace_memberSigned-in workspace members
publicAnyone with the URL

Default to workspace-member routes. Use public routes only for intentional intake, reports, or read-only surfaces.

What Apps are good for

  • Public or internal forms
  • Lightweight status and report pages
  • Webhook endpoints that queue private work
  • Thin HTTP wrappers around Functions

Apps are not a replacement for a full Next.js dashboard. Keep rich client-side products in your normal frontend stack and use Harbor for workspace-aware execution.