Just need to handle a request? Use Edge Functions for request/response work and short jobs. Custom Compute is for processes that need to run continuously.
Features
Container deploys
Push any Docker image to InsForge and it runs. Point at a pre-built image on a registry, or upload a build context and let InsForge build it from yourDockerfile. No proprietary build pipeline to learn.
Reaching your project
Set the credentials your container needs as environment variables on the service — the project URL, an API key, S3 credentials, whatever the workload uses. Nothing is injected for you, so you decide exactly what the container can reach. When you self-host, compute containers join your project’s own network by default, sopostgres:5432 and postgrest:3000 resolve by name from inside the container exactly as they do for edge functions — no public round trip.
Resources
Memory and CPU are configurable per service. Each service runs one instance; run several services if you need several workers.Logs
Structured logs per container, queryable by service and time range. Tail in the dashboard, CLI, or MCP withoutkubectl exec-ing into anything.
Secrets and env vars
Set environment variables and secrets per service, separately from your edge-function secrets. Rotate without redeploying.Self-hosting: enable compute
On InsForge Cloud, compute is fully managed and you configure nothing. When you self-host, you choose where containers run. Two providers are available, and until one is configured the compute endpoints return503 COMPUTE_NOT_CONFIGURED.
- Docker (your own host)
- Fly.io
Containers run on the same Docker daemon that runs InsForge, as siblings of the InsForge container. Nothing to sign up for, and no per-container bill.Enabling it is a single deliberate act: mount the Docker socket into the InsForge container. In your compose file, uncomment the line that is already there for this:That is the whole edit. The socket is mode
660 root:docker on Linux and root:root on Docker Desktop, and the group id differs per host, so the container reads it off the socket at startup and joins that group before dropping to the app user. Nothing to look up and nothing to set.Restart the stack. The driver registers itself when the socket is reachable and logs Compute provider "docker" ready.Optional settings:COMPUTE_PROVIDER to fly, docker, or off to be explicit.
Choosing how a service is reachable
Each service picks an ingress mode. Which modes exist depends on the provider, and so does the default: on a single host it isnone, because most compute — queue workers, processors, inference loops — takes no inbound traffic at all, while Fly gives every app a hostname and so offers only host. Omit the field and the active provider’s default applies; ask for a mode the provider cannot give and it is coerced to one it can.
Published ports bind to
127.0.0.1 by default. Set COMPUTE_BIND_ADDRESS to change that — Docker’s own default publishes on every interface, including IPv6, which would put your container on the public internet on a reachable host.
Set the deployment-wide default with COMPUTE_DEFAULT_INGRESS. For host mode, InsForge advertises the hostname but does not terminate TLS or route traffic — run your own gateway (Caddy, Traefik, nginx) in front, as you already do for the dashboard.
Building from source
Deploying a pre-built image needs nothing special: create the service with an image reference and it is pulled and started. To have InsForge build yourDockerfile, reserve the service, then upload the build context as a tarball:
?dockerfile=docker/Dockerfile if your Dockerfile is not at the context root; the path must stay inside the context. One build runs at a time — a second upload gets 429 rather than being buffered. On macOS, tar with --no-xattrs (or COPYFILE_DISABLE=1): extended attributes that the Linux daemon cannot apply will make it reject the whole context.
Platform support
What differs between providers
AskGET /api/metadata for the compute slice — it reports the configured providers and what each one can do, so tools can stop offering options that would be ignored.
Next steps
- Set up the CLI to link your project (the recommended path).
- See Edge Functions if request/response is all you need.