# envlink > Build environments on demand for you and your coding agent: lease a Linux build box, a Postgres or a hosted sandbox, sync your folder to it, and get results back as local files. - [Introduction](https://docs.envlink.projectinwork.com/index.md): Lease build environments on demand, wire them to your machine over a private network, and run builds and services there as if they were local. - [Quickstart](https://docs.envlink.projectinwork.com/quickstart.md): Install envctl, lease a Linux build box, build a project there and get the binary back, in about three minutes. - [Install](https://docs.envlink.projectinwork.com/install.md): Install envctl on macOS or Linux with the install script, by hand from a checked download, or from source. - [Concepts](https://docs.envlink.projectinwork.com/concepts.md): The model every envlink guide builds on: environments, templates, the sandbox, shares, services, projects, snapshots and timeouts. - [Build remotely](https://docs.envlink.projectinwork.com/guides/build-remotely.md): Run builds and tests in a leased linux-build box and get the results back as local files. - [Services on localhost](https://docs.envlink.projectinwork.com/guides/services-on-localhost.md): Lease a Postgres or a running app and reach it on your own machine's localhost, carried over the private tailnet. - [File sync](https://docs.envlink.projectinwork.com/guides/file-sync.md): How folders travel between your machine and an environment: content-defined chunks, ignore rules, secrets, --include and extra files. - [Snapshots](https://docs.envlink.projectinwork.com/guides/snapshots.md): Save a box's synced files when it ends and start the next one from them, so its first sync sends only what changed. - [Artifacts](https://docs.envlink.projectinwork.com/guides/artifacts.md): Keep a build's output, sealed under your project's key, and share it with a signed link that expires. - [Bazel cache](https://docs.envlink.projectinwork.com/guides/bazel.md): Every linux-build box has Bazel and a remote cache on localhost, sealed under your project's key and shared by the project's boxes. - [Run commands](https://docs.envlink.projectinwork.com/guides/exec.md): How envctl exec runs a command in an environment: syncing first, streaming, exit codes, timeouts and results. - [CI with GitHub Actions](https://docs.envlink.projectinwork.com/guides/ci.md): Make a GitHub Actions runner an envlink sandbox, build in a leased box, and clean up afterwards. - [Set up a coding agent](https://docs.envlink.projectinwork.com/agents/setup.md): Install envctl and the envlink skill where your coding agent runs, then ask it to build and test remotely by itself. - [The envlink skill](https://docs.envlink.projectinwork.com/agents/skill.md): The SKILL.md that teaches a coding agent to use envlink: what it says, where it's installed, and how to change it. - [Claude Code](https://docs.envlink.projectinwork.com/agents/claude-code.md): Let Claude Code lease, build in and clean up envlink environments, interactively or headless with only envctl allowed. - [Isolation](https://docs.envlink.projectinwork.com/security/isolation.md): What keeps one environment, one sandbox and one organization apart: gVisor, per-environment networks, a tailnet per organization, and envd's own checks. - [Encryption](https://docs.envlink.projectinwork.com/security/encryption.md): How envlink seals your files under keys that belong to your organization and project, and what shredding a project does. - [Overview](https://docs.envlink.projectinwork.com/cli/overview.md): Every envctl command, the environment variables it reads, the files it keeps and its exit codes. - [login, templates, version](https://docs.envlink.projectinwork.com/cli/login.md): Store credentials, list what you can lease, and print envctl's version. - [sandbox](https://docs.envlink.projectinwork.com/cli/sandbox.md): Make this machine the sandbox your environments are wired to. - [env](https://docs.envlink.projectinwork.com/cli/env.md): Create, list and delete environments. - [exec](https://docs.envlink.projectinwork.com/cli/exec.md): Run a command in an environment. - [sync, status, logs](https://docs.envlink.projectinwork.com/cli/sync.md): Sync shares now, show what the local envd knows, and read its connection and sync log. - [snapshots](https://docs.envlink.projectinwork.com/cli/snapshots.md): List a project's saved snapshots. - [artifact](https://docs.envlink.projectinwork.com/cli/artifact.md): Store, fetch, list, link and delete artifacts. - [project](https://docs.envlink.projectinwork.com/cli/project.md): List your organization's project keys, or destroy one. - [skills](https://docs.envlink.projectinwork.com/cli/skills.md): Install or print the envlink skill for coding agents. - [Introduction](https://docs.envlink.projectinwork.com/api-reference/introduction.md): Call envlink's API over HTTPS: authentication, errors, and the endpoints envctl itself uses. - [List templates](https://docs.envlink.projectinwork.com/api-reference/templates/list-templates.md): The templates your organization can lease, and the pools that run them. - [List environments](https://docs.envlink.projectinwork.com/api-reference/environments/list-environments.md): Your organization's environments: live ones by default. - [Create an environment](https://docs.envlink.projectinwork.com/api-reference/environments/create-an-environment.md): Leases an environment from a template and queues it for a hot node. Poll `GET /v1/environments/{id}` until `state` is `ready`. When a sandbox is given, the answer includes the sandbox's new envd configuration. - [Get an environment](https://docs.envlink.projectinwork.com/api-reference/environments/get-an-environment.md): By ID or by name. - [Delete an environment](https://docs.envlink.projectinwork.com/api-reference/environments/delete-an-environment.md): Stops it and removes its container and data, saving a snapshot first when it was created with one. The answer includes the sandbox's new configuration. - [List an environment's commands](https://docs.envlink.projectinwork.com/api-reference/environments/list-an-environments-commands.md): Every command run in it with `envctl exec`, newest first. - [Record a command](https://docs.envlink.projectinwork.com/api-reference/environments/record-a-command.md): Adds a command to the environment's log. envctl does this after each `exec`. - [Keep an environment from going idle](https://docs.envlink.projectinwork.com/api-reference/environments/keep-an-environment-from-going-idle.md): Moves its idle deadline forward. envctl does this while a command runs. - [List sandboxes](https://docs.envlink.projectinwork.com/api-reference/sandboxes/list-sandboxes.md): Your organization's sandboxes. - [Register a sandbox](https://docs.envlink.projectinwork.com/api-reference/sandboxes/register-a-sandbox.md): Registers a machine as one of your organization's sandboxes and returns a single-use tailnet key, valid for an hour, with its envd configuration. - [Get a sandbox's configuration](https://docs.envlink.projectinwork.com/api-reference/sandboxes/get-a-sandboxs-configuration.md): Its envd configuration: imports and shares for every live environment wired to it, and the keyring for their projects. - [Remove a sandbox](https://docs.envlink.projectinwork.com/api-reference/sandboxes/remove-a-sandbox.md): Deregisters it and takes it off the tailnet. - [List snapshots](https://docs.envlink.projectinwork.com/api-reference/snapshots/list-snapshots.md): A project's snapshots, newest first. - [List artifacts](https://docs.envlink.projectinwork.com/api-reference/artifacts/list-artifacts.md): Your organization's artifacts that haven't expired, newest first. - [Store an artifact](https://docs.envlink.projectinwork.com/api-reference/artifacts/store-an-artifact.md): Send the file as the body. It's cut into chunks, sealed under the project's key and packed into object storage as it arrives. At most 2 GiB. - [Get an artifact](https://docs.envlink.projectinwork.com/api-reference/artifacts/get-an-artifact.md): Its description, not its content. - [Delete an artifact](https://docs.envlink.projectinwork.com/api-reference/artifacts/delete-an-artifact.md): Deletes its objects and its record. Its links stop working. - [Download an artifact](https://docs.envlink.projectinwork.com/api-reference/artifacts/download-an-artifact.md): Streams the content. Each chunk is opened and checked against the artifact's sealed manifest on the way; a chunk that doesn't check out ends the response short of its Content-Length. The `X-Envlink-Sha256` header carries the content's sha256. - [Make a signed link](https://docs.envlink.projectinwork.com/api-reference/artifacts/make-a-signed-link.md): A link anyone can download with, until it expires; never later than the artifact itself. - [Download through a signed link](https://docs.envlink.projectinwork.com/api-reference/artifacts/download-through-a-signed-link.md): Needs no token: the link's `t` parameter is the credential. Answers 403 for a link that's altered or expired, and 410 once the artifact has expired or been deleted. - [List project keys](https://docs.envlink.projectinwork.com/api-reference/projects/list-project-keys.md): Your organization's project keys: names, versions and dates, never keys. `root` names what wraps the organization's key. - [Shred a project](https://docs.envlink.projectinwork.com/api-reference/projects/shred-a-project.md): Destroys the project's key, its snapshot records and its artifacts. Anything sealed under the key can never be read again. Admins only. - [List CLI tokens](https://docs.envlink.projectinwork.com/api-reference/tokens/list-cli-tokens.md): Your own tokens; an admin sees everyone's in the organization. - [Create a CLI token](https://docs.envlink.projectinwork.com/api-reference/tokens/create-a-cli-token.md): Shown once in the answer; only its hash is kept. - [Revoke a CLI token](https://docs.envlink.projectinwork.com/api-reference/tokens/revoke-a-cli-token.md): It stops working at once. - [List quotas](https://docs.envlink.projectinwork.com/api-reference/usage/list-quotas.md): How many environments of each template your organization may run, how many run now, and timeout defaults. - [Set a quota](https://docs.envlink.projectinwork.com/api-reference/usage/set-a-quota.md): Admins only. `*` sets the limit across every template. - [Get usage](https://docs.envlink.projectinwork.com/api-reference/usage/get-usage.md): Seconds of environment time per template per day. - [List activity](https://docs.envlink.projectinwork.com/api-reference/usage/list-activity.md): Who leased, deleted, stored and revoked what, newest first. - [Who am I](https://docs.envlink.projectinwork.com/api-reference/account/who-am-i.md): The organization and the identity the token acts as. - [Health](https://docs.envlink.projectinwork.com/api-reference/account/health.md): Whether the API is up, and its version. Needs no token. ## OpenAPI Specs - [openapi](/api-reference/openapi.json) This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.