evertap

CLI

One evertap binary is both the server (evertap serve) and the CLI. evertap help lists every command with its flags. Errors go to standard error with the next step to take, and the exit status is 1.

The CLI talks to the evertap on the same machine over its socket, which needs no sign-in, or to the one evertap login paired it with, or to EVERTAP_URL with EVERTAP_API_KEY in CI (Configuration).

Resources

A resource is a database or a bucket. Commands that take <name> also take the resource's id. Database names are unique per service, so if a database and a bucket share one, add --engine <service>. Bucket names are unique across RustFS and Garage.

Services are postgres (also postgresql or pg), mysql, redis, rustfs, and garage.

CommandWhat it does
evertap list [--engine <service>] [--json]List resources, most recently used first
evertap get <name> [--engine <service>] [--json]Show a resource and its connection details
evertap create <service> <name> [--version <v>] [--extension <e>]... [--note <text>] [--temporary] [--json]Create a database or bucket and print its connection details
evertap url <name> [--engine <service>]Print a database's connection URL, or a bucket's endpoint
evertap env <name> [--engine <service>]Print the connection details as .env lines
evertap delete <name> [--engine <service>] [--yes]Delete a resource and its data
evertap protect <name> [--engine <service>]Protect a resource from deletion
evertap unprotect <name> [--engine <service>]Allow a resource to be deleted again
evertap keep <name> [--engine <service>]Keep a temporary resource, so it no longer expires
evertap reachable <name> [--off] [--engine <service>]Let a bucket's signed links work anywhere, or stop that

create

evertap create postgres blog
evertap create postgres search --version 17 --extension vector --note "search prototype"
evertap create redis cache
evertap create rustfs photos
  • --version picks the major version, newest by default: PostgreSQL 18, 17, 16, or 15; MySQL 9.7 or 8.4; Redis 8.10, 8.2, or 7.4. Buckets have none. A version cannot be changed after creation.
  • --extension adds a PostgreSQL extension, such as vector, and can be repeated.
  • --note sets the one-line note shown in lists.
  • --temporary makes a resource that is deleted after 7 days without a connection. Each connection moves that to 7 days later. keep or protect makes it permanent. The UI never makes temporary resources.
  • --json prints the resource as JSON, connection details included.

Names:

  • PostgreSQL and MySQL: a lowercase letter first, then lowercase letters, digits, or _, up to 63 characters. Names the server keeps for itself, such as postgres or mysql, are refused.
  • Redis: the same, and - is allowed too.
  • Buckets: 3 to 63 lowercase letters, digits, or -, starting and ending with a letter or digit. RustFS keeps rustfs, minio, and health for itself. A RustFS and a Garage bucket cannot share a name: buckets reached from anywhere share one address, where only the name tells them apart.

The first database of a version, or the first bucket of a service, waits while its image downloads. If that takes over a minute, create asks you to try again in a minute while the download goes on.

reachable

reachable makes a bucket's signed links work on any device, through the address buckets have of their own, and prints the S3_PUBLIC_ENDPOINT to sign them with; --off undoes it. Objects still need a signature (Signed links that work anywhere). It is refused in local mode, until buckets have an address, and for a bucket that shares its name with a bucket on the other service, which an earlier evertap allowed.

delete

delete asks you to type the name to confirm; --yes skips that, and is required without a terminal. A protected resource cannot be deleted: run evertap unprotect <name> first. Deleting removes the data for good; evertap keeps no backups.

Pairing and status

CommandWhat it does
evertap login <url>Pair this machine with evertap; a person approves the code in a browser (Connect)
evertap logoutRevoke this machine's token and forget the address
evertap statusShow which evertap this CLI uses and whether it is signed in
evertap connect [--host <address>] [--engine <service>]...Carry database and bucket connections from this machine to evertap; keep it running
evertap doctorCheck Docker, each service, and the entries

evertap doctor works from anywhere. On the machine running evertap it also shows the Docker socket, the data directory, and why a service failed to start, which it leaves out over the network.

On the machine running evertap

These run as the user that runs evertap serve, over its socket.

CommandWhat it does
evertap serveRun the server
evertap setup [--mode local|network|cloudflare] [--url <address>] [--listen <address>] [--zone <domain>] [--s3-url <address>]Choose how other machines reach evertap, then sign a browser in (Install)
evertap openOpen evertap in a browser on this machine, signed in
evertap signin-linkPrint a one-time link and QR code that signs a browser in
evertap uninstall [--yes]Remove everything evertap made on this machine, every database's data included

setup asks questions in a terminal. With any flag, or without a terminal, it asks nothing and takes the flags, the answers saved before, and the defaults. For a Cloudflare Tunnel it creates, it takes the API token from CLOUDFLARE_API_TOKEN and the domain from --zone (Cloudflare Tunnel). --s3-url gives buckets reached from anywhere their address behind your proxy or your own tunnel; setup keeps the one saved before without it, and never asks for one. A tunnel setup creates serves them at s3.<your domain>.

uninstall lists what it will remove and asks you to type uninstall: evertap's Docker containers, volumes, and network, its files in the data directory, this machine's sign-in, the ev.internal line in the hosts file, and on macOS the loopback alias and its startup job. Stop evertap serve first. A Cloudflare Tunnel that setup created stays in Cloudflare, and uninstall lists what to remove there (Cloudflare Tunnel). On a laptop, it signs out and removes the ev.internal line. It does not remove the evertap binary or a systemd unit you installed (Limitations).

Other

CommandWhat it does
evertap version / --versionPrint the version
evertap helpList the commands
Edit on GitHub

The evertap name and logo are not licensed with the code (section 6 of the license). You may use them to refer to evertap, but not to name or brand your own product or service, or in a way that suggests evertap made or endorses it, without permission.

evertap is an independent project. It is not affiliated with, endorsed, sponsored, supported, or certified by the owners of the software it runs, and it uses their names only to say which software that is.

  • Postgres, PostgreSQL and the Slonik Logo are trademarks or registered trademarks of the PostgreSQL Community Association of Canada, and used with their permission.
  • MySQL is a registered trademark of Oracle and/or its affiliates.
  • Redis is a registered trademark of Redis Ltd. Any rights therein are reserved to Redis Ltd.
  • RustFS is a trademark of RustFS, Inc.
  • Other names, including Garage, may be trademarks of their respective owners.

On this page