Web application
HTTP server, routes, controllers, ECR views, locally served CSS and JavaScript, configuration, and the complete first-run path.
amber new my_app
# equivalent to --type web
Start with the web template →
Amber 2 · A Crystal web framework
Amber gives one developer a verified path from installation to a running Crystal web application—with routes, controllers, ECR views, typed configuration, Grant models, Micrate migrations, and local assets working together.
First run, illustrated
The web application is the default. Replay the trusted Homebrew install, create the app, and watch the generated page open.
Amber V2 · Web application
my_app is running. Your first route, view, and locally served CSS and JavaScript are ready to shape.
First edits
src/views/home/index.ecrconfig/routes.cramber generate controller PostsChoose the application
amber new my_app creates the supported web application. Choose the separate native preview when you are ready to supply and test its platform toolchains.
HTTP server, routes, controllers, ECR views, locally served CSS and JavaScript, configuration, and the complete first-run path.
amber new my_app
# equivalent to --type web
Start with the web template →
A cross-platform preview for macOS, iOS, and Android using Asset Pipeline UI, FSDD process managers, crystal-audio, and platform build scripts.
amber new field_app --type native
macOS, iOS, and Android are generated today. Linux native UI bindings remain frontier work.
Explore the native frontier →
Framework core
Amber connects routing, controllers, ECR views, typed configuration, request schemas, generators, and diagnostics in one application structure that developers and coding agents can inspect.
Generated files land in predictable places, routes select explicit pipelines, and the web app starts with Grant, SQLite, ECR, and local front-end assets already connected.
Compile type-safe Crystal to a native service while retaining garbage collection familiar to Ruby and Elixir developers.
Define request contracts once, validate incoming data into typed values, and expose machine-readable API documentation from the Schema API.
Predictable project structure, schema metadata, and bundled LSP diagnostics make routes, request contracts, and convention errors easier for people and agents to follow.
Create, generate, test, build, inspect, and watch the application through amber, the standalone CLI used throughout the supported beta path.
Ship the web path now and evaluate native macOS, iOS, and Android foundations without pretending Linux UI bindings are finished.
The public site, measured on the smallest target
On August 11, 2026, the complete 26,271-byte Amber homepage sustained a 5,906.72 req/s median on a DigitalOcean Basic one-vCPU, 512 MB-class Droplet—the $4/month size when the lab ran.
Not a static-response shortcut
The same application then held 1,000 WebSocket clients with zero connection errors while its rendered JSON path sustained an 8,058 req/s median. The site you are reading is the workload.
A separate mixed 1,000-route JSON workload on the same server class completed 18,728,053 successful responses across seven rotating repetitions with zero socket and non-2xx errors.
The released path parsed, routed, validated an eight-field request, ran the action, validated its response, and returned 7,974,608 successful responses across the four JSON, CBOR, and COSE scenarios.
Read both workloads before repeating the numbers. The 1,000-connection run used idle joined clients, and its sequential stages were noisy rather than a clean scaling curve. Neither result is a promise that every application, database, proxy, or traffic shape will perform the same way.
/ws · site:proof · local ES module
AF-014 · Records
Supported web path · persistence
Grant is the default V2 relational layer for models, relations, validations, callbacks, and queries. Amber CLI pairs it with SQLite and Micrate out of the box, then verifies a real generated create-and-update path before release.
Amber and friends
Amber owns the web application, Grant owns records, and Gemma owns files—each character marks a real software boundary with its own release status and documentation.

Owns routing, controllers, ECR views, typed configuration, and the application structure that connects them.
V2 beta coreOpen file · Read docs →
Keeps models, relations, migrations, and queries organized.
Web defaultOpen file · Read docs →
Moves attachments from validation through storage and delivery.
Ecosystem previewOpen file · Read docs →
The philosophy behind the defaults
These six principles show up in practical decisions: coherent generators, explicit boundaries, fewer required dependencies, honest preview labels, and documentation that treats a developer's time as part of the product.
Read Amber's Way