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
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
| Mode | Who can hit the route |
|---|---|
workspace_member | Signed-in workspace members |
public | Anyone 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.