Services Deployed
Unoverse has three listeners.:4105is the public port (JWT-gated:/api/*, MCP defs, workbench,/pluginsmanagement,/health).:4106is 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.:4101is the workflow engine surface (internal; other containers reach it ashttp://unoverse:4101).
VM Requirements
Sized bysize 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:terraform.tfvars, and applies the plan you approve.
A platform team can drive Terraform directly instead
(cd infra/digitalocean && terraform apply), and deploy picks up from the applied ground.
Do not setansible_become_passwordoransible_become_flagsfor cloud VMs. Their default users already have passwordless sudo configured by the cloud provider.
2. Run Core Platform Installation
The sameunoverse deploy continues straight into this once the ground is up. To re-run
this phase on its own:
unoverse deploy harden, 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 openhttp://localhost:4104/dashboard. It is never exposed through the load balancer.
Troubleshooting
Next Steps
- database.md - Configure database connection
- Your own nodes, design, and prompts arrive via Studio publish or the Marketplace (never via deploy)

