iPolloWork Docs

Self-hosted topology

Separate the local Work runtime from the organization control plane when planning a private or VPC deployment.

Self-hosting should start from the required capability, not from a desire to deploy every service. A single private remote workspace has a different topology from an organization deployment with identity, RBAC, shared providers, and hosted workers.

System flowPrivate deployment topology

The local server that executes workspace work is distinct from an optional organization control plane. Keep ingress, service ownership, data, and recovery boundaries explicit.

  1. 01Ingress

    TLS, routing, health checks, and the public organization entry point.

  2. 02Control plane

    Optional identity, teams, RBAC, policies, shared providers, and Worker lifecycle.

  3. 03Workspace runtime

    The local or remote iPolloWork Server that runs workspace tasks.

  4. 04Data and recovery

    Database, backups, audit export, restore owner, and failover process.

Start with a real server boundary

apps/server packages a filesystem-backed iPolloWork Server. It can run as a compiled binary without Bun at runtime, or from source while contributing to the repository.

# Compiled binary
ipollowork-server --workspace /srv/ipollowork/workspace --approval manual

# From the iPolloWork checkout
pnpm --filter ipollowork-server dev -- \
  --workspace /srv/ipollowork/workspace \
  --approval manual

The server default configuration is ~/.config/ipollowork/server.json. It can define the bound host and port, approval mode and timeout, an explicit list of workspaces, and accepted CORS origins. Environment overrides cover those categories as well as host and owner tokens, OpenCode connection settings, token storage, and runtime-specific behavior.

Server trust boundaryKeep the local workspace API private and explicit

The server exposes workspace and runtime functions. Administrative writes are gated by host approval or a scoped owner token, so network reachability alone is not a permission model.

01
Ingress

Where requests can arrive

Bound host and CORS

Set a narrow host and explicit origins. Do not use a wildcard as a convenience policy.

TLS terminator if remote

Own external TLS and routing outside the local server process.

02
Workspace API

What the server serves

Status and workspace routes

Health, capabilities, workspace state, artifacts, files, sessions, and audit data.

Supported OpenCode proxy

The supported path through which the client reaches the sidecar.

03
Write authority

How sensitive work is permitted

Host approval

The normal gate for operations that require local host approval.

Owner token

A scoped bearer alternative for explicitly managed automation.

Decide what to deploy

  • Private workspace only: deploy a workspace server and its supported sidecar boundary.
  • Organization control plane: deploy the web and controller services for identity, teams, policy, and administration.
  • Model gateway or metering: add the inference service only when that specific service is required.

Probe the path you own

Endpoint or checkPurposeWhen to use it
GET /healthServer liveness, version information, and basic reachabilityProcess and ingress checks
GET /statusCurrent server statusOperator diagnostics after reachability succeeds
GET /capabilitiesSupported runtime featuresClient compatibility and rollout validation
GET /w/{workspaceId}/healthWorkspace-scoped livenessIsolating a single remote or local workspace failure
/opencode/* through the serverSupported sidecar routeChecking the execution boundary rather than calling the sidecar directly

Use IPOLLOWORK_APPROVAL_MODE=manual as the normal operating posture. Any use of auto should have a clear local automation scope, a named owner, and a recovery path.

Production checklist

  1. Define the precise ingress, app, API, worker, database, and backup topology.
  2. Put services behind health checks and avoid a single-node control plane.
  3. Document the owner for restore, failover, and emergency access.
  4. Protect organization administration with the strongest authentication available.
  5. Keep secrets out of source control and audit logs.
  6. Test backup restoration and failover before an incident.

The project does not require a Cloud control plane for local work. Keep the user-facing Work client on its local server path, and add organization services only when a real identity, policy, connector, or hosted-worker requirement demands them. See Production operations for release gates and recovery evidence.