Getting started
Installing Fyra
The CLI is a single self-contained binary. Install it globally once — you're done. Works on macOS, Linux, and Windows.
Install the CLI
terminal
$ curl -fsSL https://fyra.sh/install.sh | sh
Installs fyra to /usr/local/bin.
Create an account
terminal
$ fyra register
Email: you@example.com
Password: ········
Confirm password: ········
Account created. Check your email to verify your address.
Log in
terminal
$ fyra login
Email: you@example.com
Password: ········
Logged in successfully.
Your token is saved to ~/.fyra/config.yaml.
Already have an account? Skip registration and run fyra login directly.
Getting started
Your first deploy
Two commands: fyra create registers the app, fyra push sends it to the network.
Go to your project directory
terminal
$ cd my-site/dist
Create the app
terminal
$ fyra create --appname my-site
Created app: my-site
Run 'fyra push' to deploy this directory.
Writes .deploy.yaml to your project. Omit --appname to get a random slug like quiet-river.
Push it live
terminal
$ fyra push
Scanning my-site...
Packing 24 files (840.0 KB)
Uploading... 840.0 KB sent
Deploying on server...
Done: https://my-site.apps.fyra.sh
Files are tarballed in memory, sent over gRPC, and the CDN updates automatically.
Subsequent deploys? Just fyra push again. That's the whole loop.
Domains
Custom domains
Three steps: register the domain with Fyra, add a CNAME at your registrar, then verify.
Register the domain
terminal
$ fyra set-domain shop.example.com
Custom domain set to shop.example.com.
Point your CNAME for shop.example.com → shop-example-com.ignite.fyra.sh
Run 'fyra check-domains' to verify once DNS propagates.
Add the CNAME record
At your registrar / DNS provider, add:
dns record
Type Host Value
CNAME shop.example.com shop-example-com.ignite.fyra.sh
Apex domains are also supported. Cloudflare users should enable Proxied mode.
Verify and activate
terminal
$ fyra check-domains
Have you added a CNAME for shop.example.com → shop-example-com.ignite.fyra.sh? [y/N] y
✓ CNAME verified.
Certificate status: provisioning…
✓ Custom domain is live at https://shop.example.com
To revert to slug.apps.fyra.sh, run fyra remove-domain.
Domains
SSL & HTTPS
Every Fyra site is HTTPS-only. Certificates are issued and renewed automatically.
Free subdomain certificates
*.apps.fyra.sh uses a wildcard certificate managed by Fyra. Nothing for you to do.
Custom domain certificates
Let's Encrypt issues a certificate automatically when the CNAME is detected. fyra check-domains waits for the cert to land (about 2 minutes).
certificate lifecycle
CNAME verified → cert requested → cert issued → HTTPS live
Automatic renewal
Certificates auto-renew before expiry. HTTP traffic is redirected to HTTPS.
Cert not issued? Usually a bad CNAME. Run fyra check-domains and read the diagnostic.
Customization
Custom 404 page
Drop a 404.html in your project root and Fyra serves it for not-found URLs instead of the default plain-text response.
Create a 404.html file
project structure
my-site/
├── index.html
├── about.html
├── 404.html ← your custom error page
└── styles/
└── main.css
Write your page
404.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Page not found</title>
</head>
<body>
<h1>404</h1>
<p>Nothing here — try the <a href="/">home page</a>.</p>
</body>
</html>
Deploy it
terminal
$ fyra push
Scanning my-site...
Packing 25 files (842.3 KB)
Custom 404 page detected — will be served for not-found URLs.
Uploading... 842.3 KB sent
Done: https://my-site.apps.fyra.sh
No 404.html? Visitors see a plain 404 Not Found text. Optional but recommended.
Customization
Excluding files from upload
Create a .fyraignore file using .gitignore syntax.
Create a .fyraignore file
.fyraignore
# Dependencies and build output
node_modules/
.cache/
# Private config
.env
.env.local
# Source files not needed at runtime
src/
*.sketch
*.psd
Verify what will be uploaded
fyra push prints the file count and total size on every push — there's no separate dry-run command.
terminal
$ fyra push
Scanning my-site...
Packing 18 files (210.4 KB)
Uploading... 210.4 KB sent
Done: https://my-site.apps.fyra.sh
What's always excluded
always excluded
.git/ version control history
node_modules/ npm / yarn packages
.deploy.yaml fyra app metadata
.fyraignore is often a subset of .gitignore — start by copying and trimming.