> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fly.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Our Stack

Our platform, the stuff that actually runs apps for our customers, is
built on Rust and Go. Developers on all of our platform teams
switch-hit between those two languages. We love them both, and
that's an attribute we're looking for in platform devs.

When a user aims their browser at an app hosted on Fly.io, they're
talking to `fly-proxy`, a Rust / Tokio / Hyper proxy that powers our
Anycast network.  `fly-proxy` uses `attache`, our Go SQLite Consul
cache, and `corrosion`, our Rust SWIM-based state replication service,
to route requests to the right worker and VM.

Those VMs were booted up by `flyd`, our Go orchestrator. Persistent
encrypted storage for the VMs was provisioned by `vold`, another
orchestration component. `flyd` leverages the Go-based `containerd`
ecosystem to convert Docker containers into root filesystems for our
VMs.

The VMs themselves run under `firecracker`, Amazon's Rust-based
hypervisor (and the engine behind Lambda and Fargate). Our hardware!
Amazon's hypervisor code.

Inside the VM, our code gets control again: we own the `init` that
spins things up in the VM. `init` is Rust. More and more of our fun VM
tricks are features of our `init`.

To tell us what containers to boot up, our customers talk to our
GraphQL API. The backend for that API is a Rails app, running on
Postgres.

Most of our developer UX happens in `flyctl`, our Go-based
CLI. We're a CLI-first company.

Fancy customer UI stuff? Elixir! We love Elixir and sponsor the
Phoenix project. Generally, new UI stuff at Fly.io happens in
Elixir/Phoenix/LiveView. LiveView screams on Fly.io.
