What is ix
ix.dev is a pay-for-what-you-use VM cloud provider.
We do not have instance types, all machines boot with 64 vCPU and 8 GiB of memory, and can scale to 256 GiB of memory and 1 PiB of disk. You only pay for the per-second usage of these resources, idle resources are not billed.
We have only a few primitives for interacting with our machines: a machine can be snapshotted while it runs, a snapshot can be restored into any number of new machines, and a running machine can be live-migrated to another compute node.
Boot your first VM
Install the CLI, sign in, and boot a machine.
$ curl https://ix.dev | sh $ ix login ✓ Logged in as user@ix.dev $ ix new ◆ Creating ix/base:latest ✓ Resolve template ix/base:latest (18ms) ✓ Place VM us-west-1 (37ms) ✓ Boot (505ms) ✓ Wait for ready (24ms) Created loyal-fox (584ms)
Templates
A template is a repository whose flake evaluates to a NixOS system.
ix builds it once and caches it per region, with #name picking the configuration.
$ ix new github:indexable-inc/index#web
Declare the machine
default.ix declares every package,
service, and open port in one file. Syntax is JavaScript, semantics
are nix: edit, re-apply, converge. The first apply also writes flake.nix, pinning exactly what your
machine builds from.
$ ix init created default.ix $ ix apply created flake.nix
// default.ix - JavaScript syntax, Nix semantics. export default ({ index }) => ({ services: { minecraft: { enable: true, openFirewall: true }, }, packages: [index.rg, index.htop], });
The world of ix
Underneath, ix is two primitives: machines that autoscale, and the virtual ethernet that wires them to each other and to the internet. Everything above that, firewall to web server, is open source and lives in github:indexable-inc/index.