Examples
Common workflows and examples for using the Teenode CLI and API.
Complete Git Deploy Workflow
# 1. Login
teenode auth login
# 2. Switch to team
teenode team list
teenode team use team_abc123
# 3. Create Git Deploy project
teenode project create \
--name my-web-app \
--type GIT_DEPLOY \
--region us-east
# 4. Create deployment from Git commit
teenode deployment create proj_abc123 \
--commit-sha "abc123def456789" \
--commit-message "Deploy new feature" \
--branch "main"
# 5. Check deployment status
teenode deployment info dep_xyz789
# 6. View logs
teenode deployment logs dep_xyz789 --lines 100Complete TEE VM Workflow
# 1. Login
teenode auth login
# 2. Switch to team
teenode team use team_abc123
# 3. Create TEE VM project
teenode project create \
--name secure-app \
--type TEE_VM \
--region us-east
# 4. Create VM with specifications
teenode vm create proj_xyz789 \
--cpu-cores 8 \
--ram-mb 8192 \
--disk-gb 200 \
--os-image ubuntu-22.04 \
--hostname prod-vm
# 5. Wait for VM to be ready
sleep 30
# 6. Check VM status
teenode vm info proj_xyz789
# 7. Access VM via SSH
teenode vm console proj_xyz789
# 8. Get attestation report
teenode vm attest proj_xyz789Automation with JSON Output
Perfect for CI/CD pipelines and automation scripts:
# Get all active projects
teenode project list --json | jq '.projects[] | select(.status == "ACTIVE")'
# Create deployment and extract ID
DEPLOYMENT_ID=$(teenode deployment create proj_abc123 \
--commit-sha $GIT_SHA \
--commit-message "$GIT_MESSAGE" \
--branch $GIT_BRANCH \
--json | jq -r '.deployment.id')
echo "Created deployment: $DEPLOYMENT_ID"
# Monitor deployment status
while true; do
STATUS=$(teenode deployment info $DEPLOYMENT_ID --json | jq -r '.deployment.status')
echo "Status: $STATUS"
if [ "$STATUS" = "ACTIVE" ] || [ "$STATUS" = "FAILED" ]; then
break
fi
sleep 5
done
# Create VM and get public IP
VM_INFO=$(teenode vm create proj_xyz789 \
--cpu-cores 4 \
--ram-mb 4096 \
--disk-gb 100 \
--os-image ubuntu-22.04 \
--json)
VM_ID=$(echo $VM_INFO | jq -r '.vm.id')
PUBLIC_IP=$(echo $VM_INFO | jq -r '.vm.publicIp')
echo "Created VM: $VM_ID with IP: $PUBLIC_IP"Team Management
# List all teams
teenode team list
# Switch to team
teenode team use team_marketing
# Create project in specific team
teenode project create \
--name landing-page \
--type GIT_DEPLOY \
--region eu-central \
--team team_marketing
# List only that team’s projects
teenode project list --team team_marketing
# Create resources in personal team (override)
teenode project create \
--name personal-project \
--type TEE_VM \
--region us-east \
--team team_personalSSH Key Management
# Add SSH key from file
teenode ssh-key add --name my-laptop --file ~/.ssh/id_ed25519.pub
# Add SSH key interactively
teenode ssh-key add
# List all SSH keys
teenode ssh-key list
# Delete SSH key
teenode ssh-key delete key_abc123
# Get SSH keys as JSON
teenode ssh-key list --jsonBatch Operations
Stop All VMs in a Project
#!/bin/bash
# Get all projects
PROJECTS=$(teenode project list --json | jq -r '.projects[].id')
for PROJECT in $PROJECTS; do
# Get project type
TYPE=$(teenode project info $PROJECT --json | jq -r '.project.type')
if [ "$TYPE" = "TEE_VM" ]; then
echo "Stopping VM for project $PROJECT..."
teenode vm stop $PROJECT --yes
fi
doneCreate Multiple VMs
#!/bin/bash
# Create TEE VM project
PROJECT=$(teenode project create \
--name multi-vm-project \
--type TEE_VM \
--region us-east \
--json | jq -r '.project.id')
# Create multiple VMs
for i in {1..3}; do
echo "Creating VM $i..."
teenode vm create $PROJECT \
--cpu-cores 4 \
--ram-mb 4096 \
--disk-gb 100 \
--os-image ubuntu-22.04 \
--hostname vm-$i \
--json | jq '.vm | {id, hostname, state}'
doneUsing Mock Mode for Testing
# Enable mock mode (no API calls)
export TEENODE_MOCK=true
# Test login
teenode auth login --email [email protected] --password test123
# Create a project (in mock mode)
teenode project create --name test-project --type GIT_DEPLOY --region us-east
# Disable mock mode
unset TEENODE_MOCKDebugging
DEBUG=teenode:* teenode project list