Appwrite CLI
Installation
npm install -g appwrite-cli
brew install appwrite
curl -sL https://appwrite.io/cli/install.sh | bash
scoop install https://raw.githubusercontent.com/appwrite/sdk-for-cli/master/scoop/appwrite.config.json
Verify installation:
appwrite -v
Login & Initialization
appwrite login
appwrite login --endpoint "https://your-instance.com/v1"
appwrite init project
appwrite projects get --project-id "<PROJECT_ID>"
Configuration
appwrite login
For the full list of CLI commands, see CLI Commands.
For headless / CI/CD usage, see Non-Interactive Mode.
appwrite.config.json
All resources are configured in a single appwrite.config.json file at the project root:
{
"projectId": "<PROJECT_ID>",
"endpoint": "https://<REGION>.cloud.appwrite.io/v1",
"functions": [],
"sites": [],
"tablesDB": [],
"tables": [],
"buckets": [],
"teams": [],
"topics": []
}
Deploying Functions
appwrite init functions
appwrite pull functions
appwrite push functions
Function configuration in appwrite.config.json
{
"functions": [
{
"$id": "<FUNCTION_ID>",
"name": "userAuth",
"enabled": true,
"live": true,
"logging": true,
"runtime": "node-18.0",
"deployment": "<DEPLOYMENT_ID>",
"vars": [],
"events": [],
"schedule": "",
"timeout": 15,
"entrypoint": "userAuth.js",
"commands": "npm install",
"version": "v3",
"path": "functions/userAuth"
}
]
}
Function commands
| Command |
Description |
appwrite functions list |
List all functions |
appwrite functions create |
Create a new function |
appwrite functions get --function-id <ID> |
Get a function by ID |
appwrite functions update --function-id <ID> |
Update a function |
appwrite functions delete --function-id <ID> |
Delete a function |
appwrite functions list-runtimes |
List all active runtimes |
appwrite functions list-deployments --function-id <ID> |
List deployments |
appwrite functions create-deployment --function-id <ID> |
Upload a new deployment |
appwrite functions update-deployment --function-id <ID> --deployment-id <ID> |
Set active deployment |
appwrite functions delete-deployment --function-id <ID> --deployment-id <ID> |
Delete a deployment |
appwrite functions download-deployment --function-id <ID> --deployment-id <ID> |
Download deployment |
appwrite functions create-execution --function-id <ID> |
Trigger execution |
appwrite functions list-executions --function-id <ID> |
List execution logs |
appwrite functions get-execution --function-id <ID> --execution-id <ID> |
Get execution log |
appwrite functions list-variables --function-id <ID> |
List variables |
appwrite functions create-variable --function-id <ID> --key <KEY> --value <VALUE> |
Create variable |
appwrite functions update-variable --function-id <ID> --variable-id <ID> --key <KEY> --value <VALUE> |
Update variable |
appwrite functions delete-variable --function-id <ID> --variable-id <ID> |
Delete variable |
Trigger a function with body
appwrite functions create-execution \
--function-id <FUNCTION_ID> \
--body '{"key": "value"}'
Local development
appwrite run functions
Deploying Sites
appwrite init sites
appwrite pull sites
appwrite push sites
Site configuration in appwrite.config.json
{
"sites": [
{
"$id": "<SITE_ID>",
"name": "Documentation template",
"enabled": true,
"logging": true,
"framework": "astro",
"timeout": 30,
"installCommand": "npm install",
"buildCommand": "npm run build",
"outputDirectory": "./dist",
"specification": "s-1vcpu-512mb",
"buildRuntime": "node-22",
"adapter": "ssr",
"fallbackFile": "",
"path": "sites/documentation-template"
}
]
}
Site commands
| Command |
Description |
appwrite sites list |
List all sites |
appwrite sites create |
Create a new site |
appwrite sites get --site-id <ID> |
Get a site by ID |
appwrite sites update --site-id <ID> |
Update a site |
appwrite sites delete --site-id <ID> |
Delete a site |
appwrite sites list-frameworks |
List available frameworks |
appwrite sites list-specifications |
List allowed specs |
appwrite sites list-templates |
List available templates |
appwrite sites get-template --template-id <ID> |
Get template details |
appwrite sites list-deployments --site-id <ID> |
List deployments |
appwrite sites create-deployment --site-id <ID> |
Create deployment |
appwrite sites get-deployment --site-id <ID> --deployment-id <ID> |
Get deployment |
appwrite sites delete-deployment --site-id <ID> --deployment-id <ID> |
Delete deployment |
appwrite sites update-site-deployment --site-id <ID> --deployment-id <ID> |
Set active deployment |
appwrite sites update-deployment-status --site-id <ID> --deployment-id <ID> |
Cancel ongoing build |
appwrite sites list-variables --site-id <ID> |
List variables |
appwrite sites create-variable --site-id <ID> --key <KEY> --value <VALUE> |
Create variable |
appwrite sites update-variable --site-id <ID> --variable-id <ID> --key <KEY> --value <VALUE> |
Update variable |
appwrite sites delete-variable --site-id <ID> --variable-id <ID> |
Delete variable |
appwrite sites list-logs --site-id <ID> |
List request logs |
appwrite sites get-log --site-id <ID> --log-id <ID> |
Get a log |
appwrite sites delete-log --site-id <ID> --log-id <ID> |
Delete a log |
Managing Tables (Databases)
appwrite init tables
appwrite pull tables
appwrite push tables
Table configuration in appwrite.config.json
{
"tablesDB": [
{
"$id": "<DATABASE_ID>",
"name": "songs",
"enabled": true
}
],
"tables": [
{
"$id": "<TABLE_ID>",
"$permissions": ["create(\"any\")", "read(\"any\")"],
"databaseId": "<DATABASE_ID>",
"name": "music",
"enabled": true,
"rowSecurity": false,
"columns": [
{
"key": "title",