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 100

Complete 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_xyz789

Automation 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_personal

SSH 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 --json

Batch 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
done

Create 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}'
done

Using 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_MOCK

Debugging

DEBUG=teenode:* teenode project list
    Examples - Teenode Documentation