A hosting environment in a container. Think cPanel-style shared hosting, rebuilt so each project gets its own lightweight host. No Dockerfile, no rebuilds: start the container, then add runtimes, databases, domains, files, and applications from the dashboard, CLI, or API.
Try the read-only demo first: demo / abc123!. Or run your own - Docker and Podman both work:
docker run -d --name 'myapp.net' \
--env 'PRIMARY_VHOST=myapp.net' \
-p 8080:80 -p 8443:443 -p 127.0.0.1:1618:1618 \
docker.io/goinfinite/os:latest
Open https://localhost:1618/. Your browser warns once about the self-signed certificate, then the first login creates the admin account.
Most container images are built around an application: everything inside is decided at build time, and adding a service means rebuilding and redeploying.
Infinite OS is different. The container is the hosting environment: a generic host you fill in after it starts, with PHP, Node.js, Bun, Python, Ruby, Java, databases, applications, and other services.
We call it a "wildcard container image" because the same base image becomes whatever the project needs. It is a host in a box, stateful by design: the container filesystem holds the state, restarts preserve the environment, and image upgrades are handled as migrations. See State and Upgrades.
If you have used traditional hosting before, the workflow will feel familiar.
Infinite OS is built for developers, vibe coders, homelabbers, students, and agencies who want to run applications without turning infrastructure into a project. Use the dashboard and barely touch the terminal, or script everything through the CLI and REST API.
The easiest way to think about the architecture:
- Traditional hosting: one OS → many projects
- Docker Compose: one project → many service containers
- Infinite OS: one project → one hosting container → many project services
Traditional shared hosting puts unrelated projects on one server and isolates them inside the operating system. Infinite OS moves that boundary to the container runtime: the services of one project live together, and unrelated projects get separate environments.
A Laravel project, for example, might have nginx, PHP, MariaDB, workers, cron jobs, and a coding agent inside the same Infinite OS container. Another project would get another container.
Infinite OS starts as a single Go binary on a lightweight Debian base, using about 80MB of RAM. That makes running several small environments side by side practical. It is also the model behind our own cloud hosting: many Infinite OS environments instead of one large shared-hosting server.
That same project boundary makes Infinite OS a good workspace for coding agents. Run an agent such as OpenCode in the built-in web terminal and it gets a complete environment: project files, runtimes, databases, domains, and the os CLI. It can install dependencies and deploy the application end to end.
Tip
Using an AI coding agent? Point it at SKILL.md. It maps the dashboard, CLI, and REST API, and covers the core deployment workflows.
In the dashboard, open Marketplace, pick WordPress, and click Install. Or run it from the host:
docker exec myapp.net os mktplace install -s wp \
-f 'adminUsername:admin' \
-f 'adminPassword:abc123!' \
-f 'adminMailAddress:user@example.com'
The same command works from the built-in web terminal. Infinite OS installs the dependencies, starts the services, and creates the mapping.
Your own application works the same way: clone it into the environment, install its runtime, create its database, and map it to a hostname. SKILL.md has examples for PHP, Node.js, Python, and more.
For another project, start another container: each project gets its own filesystem, services, configuration, terminal, and agent workspace.
- Marketplace: WordPress, n8n, and dozens more, installed in a few clicks
- Services: PHP, Node.js, Bun, Python, Ruby, Java, databases, and other building blocks, installed on demand
- Automatic Mappings: apps get their hostname and route on install
- Automatic SSL: free TLS certificates for public domains
- Primary Domain Sync: change the domain once; nginx, PHP, and database records follow
- Web Terminal: a terminal in your browser, no SSH setup. Use it for quick commands or to run an AI coding agent like OpenCode
- File Manager: browse, edit, upload, and extract files
- Cron Jobs: schedule recurring tasks
- Runtime Settings: switch PHP versions and edit PHP settings from the dashboard
- Team Accounts: one login per person
- Security Rules: rate, bandwidth, and connection limits per route
- CLI and REST API: most actions have a matching command
You can also build your own image on top of Infinite OS: pre-install what your environment needs and keep the dashboard, CLI, and API available.
Traditional hosting and cPanel: the same workflow, a different isolation model. Instead of many hosting accounts inside one OS, each project gets its own container.
Docker and Docker Compose: Compose describes a project's services ahead of time, usually one container per service. Infinite OS gives the project one small, mutable environment instead: the web server, runtimes, databases, workers, and other services are installed and managed together after launch. Compose treats infrastructure as a declared stack; Infinite OS treats it as a server you operate.
VM or VPS: the closest day-to-day analogy. You get an environment you can configure after it starts, but it shares the host kernel instead of booting a guest OS, so it is much lighter.
Infinite OS is also not a PaaS such as Coolify, Dokku, or CapRover. Those tools manage deployments and containers; Infinite OS is the hosting environment inside one container. Our sibling project Infinite Ez handles the multi-environment layer.
PRIMARY_VHOST is the primary hostname served by the environment. Use a real domain or a placeholder such as myapp.net for local experimentation.
Port 1618 serves the dashboard and API. The example binds it to 127.0.0.1 so the setup wizard is not exposed. On a production server, deploy through a PaaS: we recommend Infinite Ez, which makes the setup straightforward.
Ports 8080 and 8443 map to HTTP and HTTPS inside the environment for local testing. For a public deployment with automatic TLS, point the domain's DNS at the host and expose ports 80 and 443 directly instead:
-p 80:80 -p 443:443
We left --rm out on purpose. The container is the server: everything you install lives on its filesystem.
Prefer a GUI? Docker Desktop, Podman Desktop, Rancher Desktop, OrbStack, and Portainer all work: point yours at docker.io/goinfinite/os:latest, set PRIMARY_VHOST, publish port 1618.
- A replacement for Docker or Podman. It runs on top of a container runtime
- A traditional shared-hosting monolith. Unrelated projects are better kept apart
- A multi-server PaaS. Infinite OS manages one environment; our sibling project Infinite Ez manages many
- A walled garden. Run it locally, on a server, or through container platforms and orchestrators that can support its stateful model
Open an issue on our GitHub repository, start a discussion on GitHub discussions or Reddit, or check our cloud offerings!
If Infinite OS is useful to you, sponsor us on GitHub or choose one of our cloud offerings.
Want to contribute? See CONTRIBUTING.md.
Important
Human Reviewed: AI models assist development, and senior developers review every line for coherence, readability, and maintainability.
The public roadmap lives at GitHub Projects. Discuss feature requests with the community before opening an issue.
For bug fixes, open an issue with steps to reproduce, expected behavior, and relevant logs or screenshots.
Licensed under the Eclipse Public License (EPL) 2.0. See LICENSE.md.
Thanks to our contributors and to the maintainers of the open-source projects we build on. The full dependency list is in go.mod and the Containerfile.
Infinite OS is in beta. Expect some bugs; reports help us fix them.
