Self-hostingSelf-hosting
View Markdown

Self-hosting Vifu

The standard service deployment runs the Console, Vifu Server, Vifu Agent Gateway, and PostgreSQL. Server and Gateway can run in the same process or as separate roles. Choose one starting path:

GoalGuide
Try Vifu on one computerRun Vifu locally
Run one persistent multi-service deploymentRun with Docker
Develop the Console or Rust runtimeRun Vifu locally

Both paths run the same Runtime and use the same project model. The release binary is the shortest first run. Docker supplies PostgreSQL and separately managed Server, Gateway, and Dashboard services.

Services

ServicePurposeDefault address
PostgreSQLProjects, releases, sessions, credentials, and logs127.0.0.1:5432
Vifu ServerProject HTTP, realtime, Gateway APIs, and public Dashboard origin127.0.0.1:6790
Dashboard serviceServer-side authority used behind the Server origin in Dockerinternal dashboard:6791
Agent GatewayProvider discovery and invocationConnects internally to Vifu Server

Agent Gateway is an optional remote provider transport and connects to Vifu Server. An embedded application uses VifuRuntime directly and registers its providers in process; see Embed the runtime.

After the stack is healthy, create a project and continue with Agent Providers.

Remote Gateway enrollment

The managed Docker and combined local shapes use deployment bootstrap registration. A Gateway on another machine uses a project owner's one-time enrollment token:

  1. exchange the owner's access token through POST /v1/auth/exchange;
  2. create a token through POST /v1/project/{slug}/agent-gateway-enrollments; and
  3. provide it to Gateway once through VIFU_AGENT_GATEWAY_ENROLLMENT_TOKEN or VIFU_AGENT_GATEWAY_ENROLLMENT_TOKEN_FILE.

Gateway consumes the token, registers its own long-lived credential, and stores that credential in a session file scoped to the Server URL. Enrollment tokens expire after five minutes, are single-use, and are rejected in persistent runtime configuration.

Before remote access

The included ports bind to loopback by default. For remote access, keep PostgreSQL private and place the Console and runtime behind HTTPS and your chosen network access controls. Never expose provider credentials, bootstrap values, or the Console's server credential to browser code or application clients.