Skip to main content
bunny scripts provides a full workflow for Edge Scripting: scaffold a project from a template, create and deploy scripts, manage deployments, environment variables, and custom domains, and link an existing script to a local project. Most subcommands default to the script linked in .bunny/script.json. Pass an ID (or --id <script-id>) to target another script.

bunny scripts init

Create a new Edge Script project from a template.
When --repo / --template-repo is given without --type, the script type defaults to standalone. With --github-actions, git is initialized automatically, the template’s .github/ workflow is kept, and after creating the script you’ll be shown the SCRIPT_ID to add as a GitHub repo secret. With --no-github-actions, the .github/ directory is removed and git init is prompted (or skipped via --skip-git).
The .changeset/ directory is always removed from the template. Bunny scripts don’t use it.

bunny scripts create

Create a new Edge Script on bunny.net without scaffolding a project. Use this when you have an existing project, for example after running bunny scripts init without --deploy, and need a remote script before running bunny scripts deploy.

bunny scripts deploy

Deploy code to an Edge Script. Uploads code and publishes by default.
After publishing, the live URL and any custom domains are printed.
bunny scripts deploy works regardless of how the script was created or whether GitHub Actions is configured. The last deployment always wins, whether triggered by a GitHub Action or a manual CLI deploy.
Link the current directory to a remote Edge Script. Creates a .bunny/script.json manifest file.

bunny scripts list

List all Edge Scripts.

bunny scripts show

Show details for an Edge Script. Uses the linked script from .bunny/script.json if no ID is provided. Output includes the script’s hostnames (system and custom) with their SSL status.

bunny scripts stats

Show usage statistics for an Edge Script: request, CPU, and cost totals over the period, plus a per-bucket requests-served bar chart in text mode (buckets are labelled with friendly UTC dates, e.g. May 19, 2026, or date + time with --hourly). Defaults to the last 30 days. When no ID is given, the command resolves the linked script from .bunny/script.json. If there is no link either, it prompts you to pick a script and offers to link the directory for next time. In --output json mode the picker is skipped and the command errors instead. Pass an ID or run bunny scripts link in CI.

bunny scripts delete

Delete an Edge Script. Uses the linked script if no ID is provided. Requires double confirmation (or --force to skip).

bunny scripts deployments

Manage Edge Script deployments.

bunny scripts deployments list

List deployments for an Edge Script. Uses the linked script if no ID is provided.

bunny scripts deployments publish

Publish (roll back to) a past deployment by its release ID, as shown in deployments list. bunny scripts deploy already uploads and publishes in one step; use this to re-publish an earlier release without touching the current code. Uses the linked script if no ID is provided.

bunny scripts env

Manage environment variables and secrets for an Edge Script. All subcommands default to the linked script; pass --id <script-id> to target another.

bunny scripts env list

List environment variables and secrets.

bunny scripts env set

Set an environment variable or secret. Runs interactively when arguments are omitted. The variable name is uppercased.

bunny scripts env remove

Remove an environment variable or secret. Shows an interactive picker when no name is given; prompts for confirmation unless --force.

bunny scripts env pull

Pull environment variables to a local .env file.

bunny scripts domains

Manage custom domains for an Edge Script. A script’s domains live on its linked pull zone, so these commands operate on that pull zone. All subcommands default to the linked script; pass --id <script-id> to target another, and --pull-zone <id> when a script has more than one linked pull zone.

bunny scripts domains add

Add a custom domain. SSL is not requested by default. A free certificate can only be issued once your DNS points at bunny.net, so the command prints the CNAME record to create and the follow-up command to enable HTTPS. Pass --ssl to issue a certificate immediately; HTTP is redirected to HTTPS by default (opt out with --no-force-ssl).

bunny scripts domains ssl

Request a free SSL certificate for a custom domain. Run this after the domain’s DNS points at bunny.net (see the CNAME printed by domains add). HTTP is redirected to HTTPS by default; pass --no-force-ssl to keep plain HTTP.

bunny scripts domains list

List the domains on a script’s pull zone, with SSL and Force SSL status.

bunny scripts domains remove

Remove a custom domain. System hostnames controlled by bunny.net cannot be removed.

bunny scripts docs

Open the Edge Scripts documentation in your browser.