Skip to main content
Choose your provider below. For cloud storage, create the bucket or container first. Run the commands inside your Gat repository; replace the example storage names with yours.
Keep credentials in environment variables or use identity-based authentication—not in remote URLs. Gat saves URLs as entered, even with --local. Redacted output does not protect secrets stored in configuration.

Choose a provider

In cloud URLs, /gat is an optional for your objects, not a local directory.
Amazon S3 and S3-compatible services use s3://.
1

Set credentials

Set AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY. For temporary credentials, also set AWS_SESSION_TOKEN.AWS profiles and configured ECS, EC2, or web-identity credentials also work.
2

Add the remote

A signing region is required. Gat checks region, then AWS_REGION, then AWS_DEFAULT_REGION. It does not read the region from a profile or detect it from the bucket.
Set your service’s and signing region. Use its credentials in the same AWS environment variables. For local MinIO:
Use HTTPS for non-local endpoints.
Without profile, Gat uses AWS_PROFILE or default. Static environment credentials take precedence over profiles.Modern sso_session profiles and credential_process are not loaded directly. For SSO, export credentials from the AWS CLI:
The export command also works with credential_process profiles. Repeat the export when credentials expire; Gat does not refresh exported tokens.
Use skip_signature=true for unsigned requests. A region is still required.
This does not grant permissions. Public buckets usually allow reads, not uploads.

Manage a remote

These examples use origin. Substitute your remote name as needed:
add and URL-changing update check configuration and backend capabilities—not connectivity or account permissions. list and show only inspect configuration.
Local settings override project settings; project settings override global settings. See Config inheritance for how complete named definitions override one another.
Use the same scope flag as the original definition, such as --local. Changing the URL does not copy stored objects. Follow the storage migration workflow when moving content to a new store.
Single quotes preserve the . Set the variable before adding or updating the URL, and whenever a command uses the remote. Examples using export require a POSIX shell; use your shell’s equivalent on Windows.Names must match [A-Za-z_][A-Za-z0-9_]*. Expansion happens once; shell commands and ${NAME:-default} are not supported.

Troubleshooting and advanced options

Use an environment reference when an option contains special characters:
Set SAS_TOKEN to the token exactly as Azure supplies it. Gat preserves characters such as &, +, #, and % in query-value substitutions. Do not add URL encoding. If you previously pre-encoded a variable for Gat, remove that extra encoding layer.You can also set AZURE_STORAGE_SAS_TOKEN and omit sas_token from the URL. Literal URLs and whole-URL references retain normal URL semantics; use references for individual values rather than embedding raw tokens in them.
list and show redact sensitive URL values without expanding templates or opening a backend. The saved URL is unchanged.Review URLs and endpoints from untrusted repositories before using your credentials with them.
Private certificate authorities must be trusted by the build’s TLS transport. There is no generic remote query option; SSL_CERT_FILE and SSL_CERT_DIR are not portable overrides.Only the five schemes above are supported. Cloud options must be supported by Gat’s OpenDAL version (0.58.2), not merely by the provider’s SDK. In cloud URLs, the host and non-empty path override bucket/container and root query fields.

Readiness on first use

Before the first network transfer, Gat checks that it can list the configured storage root. Credentials must allow root listing, plus the read, write, or delete operations you intend to use. This check has a 5-second deadline. If connection setup needs longer, set a positive whole number of seconds:
Unset the variable to restore the default. This changes connection readiness only, not transfer timeouts.
For a timeout, check network access and the configured credential provider. A timeout does not prove credentials are missing. If listing is denied, check permission to list the configured bucket or container prefix.After fixing the problem, rerun the command. A successful connection check does not prove read, write, or delete access; test an actual transfer.
The check includes credential discovery, requests, and retries. Its result is reused within the command. Unused remotes, cache-only work, configuration inspection, and file:// remotes do not run it.

Next steps

Transfer files

Push, fetch, or pull objects with your remote.

Remote commands

Choose a default remote and manage existing remotes.