layer
Command-line interface for Layer — AI asset generation for game studios.
Reaches the same models, workspaces, and Creative Unit balance as the app, from a terminal, a Makefile, or a CI job.
Install
uv tool install layer # or: pipx install layer
Python 3.10 and up — deliberately older than the services that build it, so the same package imports inside Blender, Maya, and Houdini.
Working on the CLI itself? Install it from your checkout instead, so the layer
command follows the branch you have out:
task -d apps/cli-py install-cli
Sign in
layer login # opens a browser
layer login --device # for SSH sessions and containers
layer whoami
layer use my-studio
For CI and other unattended runs, set LAYER_API_KEY to a personal access token instead
of signing in.
Generate
layer generate image -p "a crystal sword icon, transparent background"
layer generate video -d 5 --aspect-ratio 16:9 -p "camera pushes through the gate"
layer generate mesh -p "weathered treasure chest, game-ready"
layer generate audio -p "arcade coin pickup"
Each waits for the run, prints what it cost, and writes the result into the working
directory under a name derived from the prompt — never overwriting a file already there.
-o takes a directory, or the exact filename when there is a single output;
--no-download prints URLs instead.
Leave --base-model off and the recommended model for that modality is chosen and
named. The catalogue is read from your workspace, not shipped with the package:
layer base-models list --modality video
layer base-models show bfl-flux-2-pro # the keys --param accepts
Every run is priced before it executes. --confirm asks first; --max-cost 8 refuses
anything more expensive. For a long render, submit and collect later:
id=$(layer --json generate video --no-wait -p "..." | jq -r .inference_id)
layer generate status "$id" --wait
Where settings come from
Highest wins:
- a command-line flag
- an environment variable —
LAYER_PROFILE,LAYER_WORKSPACE,LAYER_PROJECT,LAYER_API_URL,LAYER_API_KEY layer.toml, found by walking up from the working directory- the active profile in
~/.layer/config.toml
Committing a layer.toml pins a checkout to its workspace, so two repos open in two
terminals cannot generate into each other's:
workspace = "my-studio"
project = "season-12-art"
Scripting
--json puts the result on stdout and nothing else — progress, warnings, and errors all
go to stderr, so a pipeline never has to filter them out.
layer --json whoami | jq -r .workspace
layer --json generate image -p "..." | jq -r '.files[].path'
Exit codes: 0 ok, 1 error, 2 usage, 3 auth, 4 insufficient balance,
5 invalid input, 6 content policy, 7 timeout. They may gain members, never change
meaning, so a caller can branch on them without parsing prose.
Documentation
Driving Layer from an agent rather than a shell? There is an MCP server and an Agent Skills pack.
Licence
Apache-2.0
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file layer-1.0.6.tar.gz.
File metadata
- Download URL: layer-1.0.6.tar.gz
- Upload date:
- Size: 54.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3020d2ee7103d0220694ba607559058b722d5a1f5113d1b14f9c12d8acd69d9c
|
|
| MD5 |
60259745bb5d5ce75fb420fcd1d58cba
|
|
| BLAKE2b-256 |
f018d6fd0c9e0b0638f8fc02992639614d60476aab971cea4a0557ccaa0c426e
|
File details
Details for the file layer-1.0.6-py3-none-any.whl.
File metadata
- Download URL: layer-1.0.6-py3-none-any.whl
- Upload date:
- Size: 65.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
324c1a30a62f9415cc4a8ea0114983fdb8ccfae484554812ec7c0d9c10890caa
|
|
| MD5 |
f6da9458359d0e50f4935db9b387b2cb
|
|
| BLAKE2b-256 |
f0a32e9791019c34073f46b5606df8ddddbae7aedfdf27e9c7d107a0a675c461
|