Zero-click Appwrite test environments.
Allows you to spin up versioned Appwrite deployments for easy testing via CLI or through code, that can be ran in a sequence of E2E tests.
pip install appwrite-lab
- Spin up ephemeral Appwrite instances with Docker/Podman
- Automatically grab API keys (for programmatic access)
- Environment syncing (with
appwrite.json
) - Clean teardowns
- Test suite
- Appwrite data population
appwrite-lab --help
or
awlab --help
awlab new lab test --version 1.7.4
Note: This might take a few minutes the first time as its downloading all of the necessary images to launch Appwrite.
Additional arguments can be found here.
awlab new lab --help
awlab new lab test --version 1.7.4 --port 8005 --email [email protected] --password xxxxxxx12
awlab stop test
awlab list labs

Run in the same folder where your appwrite.json
is located to sync all
resources:
awlab sync test
or sync a specific resource:
awlab sync test --resource functions
from appwrite_lab import Labs
from appwrite_lab.automations.models import AppwriteLabCreation
labs = Labs()
lab_res = labs.new(
name="test",
version="1.7.4",
auth=AppwriteLabCreation(
admin_email="[email protected]",
admin_password="xxxxxxx12",
project_id=None, # for auto gen
project_name=None, # for auto gen
)
port=8005
)
assert lab_res.data
from appwrite_lab.models import AppwriteLabCreation
auth = AppwriteLabCreation.generate()
from appwrite_lab import Labs
from appwrite_lab.automations.models import Expiration
Labs().sync_with_appwrite_config(
name="test",
appwrite_json="appwrite.json", # if not directly in folder
sync_type="all",
expiration=Expiration.THIRTY_DAYS,
)
Since I am mimicking the compose
file that Appwrite provides, it was not designed to work rootless, but I have adjusted to work also on Fedora. You will need to turn selinux
off for now to use.