Skip to main content
Deploy the core Gravity Platform services to a VM.

Services Deployed

Unoverse has three listeners. :4105 is the public port (JWT-gated: /api/*, MCP defs, workbench, /plugins management, /health). :4106 is the internal node runtime (/execute, /nodes, /skills, /health) β€” it lives on the Docker network only and is deliberately never published or proxied; network isolation is the trust boundary. :4101 is the workflow engine surface (internal; other containers reach it as http://unoverse:4101).

VM Requirements

Sized by size in terraform.tfvars (small | medium | large). All sizes are single-VM: the size scales the box and the stores, never the topology.

Prerequisites

  • Terraform ground applied (VM, load balancer + TLS, firewall, Postgres, Redis β€” see the overview)
  • DOCR token in your terraform.tfvars (from your Unoverse admin)

Steps

1. Provision

Your applied ground IS the configuration β€” there is nothing to write:
Do not set ansible_become_password or ansible_become_flags for cloud VMs. Their default users already have passwordless sudo configured by the cloud provider.

2. Run Core Platform Installation

One command, three phases: installs Docker, pulls DOCR images, and starts every service (unoverse, memory, Canvas, umap, Dozzle); sets up the database; and verifies connectivity. Hardening is a deliberate follow-up (unoverse deploy harden, 04-harden) when a universe graduates from POC. The CLI reads the deploy target from your ground’s rendered configuration and generates a temporary Ansible inventory on every run, so there is no inventory file to maintain. Every deploy after the first is just:

3. Verify (re-run any time)

Expected Output

Memory dashboard is internal-only. Access via SSH tunnel: ssh -L 4104:localhost:4104 root@<VM_IP> then open http://localhost:4104/dashboard. It is never exposed through the load balancer.

Troubleshooting

Next Steps

  • 02-database.md - Configure database connection
  • Your own nodes, design, and prompts arrive via unoverse update, the Marketplace, or Studio publish (never via deploy)