← Back to Dashboard

Tenka Cloud

Platform Documentation & API Reference

Overview

Tenka Cloud is a platform for deploying and managing cloud servers with pre-configured applications. It supports two cloud providers:

Each server gets a subdomain (name.tenka.cloud), automatic SSL via Let's Encrypt, web terminal access, and an AI assistant (Claude Code) pre-installed.

Architecture

Stack

Server Provisioning Flow

  1. Generate RSA 4096 key pair
  2. Register public key with cloud provider
  3. Create firewall (ports 22, 80, 443)
  4. Launch server with cloud-init script
  5. Cloud-init installs software, configures Claude Code, sets up SSL
  6. SSH key encrypted via KMS and stored in DB

Available Apps

AppDescriptionProviders
Claude CodeDevelopment VM with Claude Code AI assistant, Node.js, nginx, tmuxBoth
Basic Web ServerNginx + Node.js ready-to-use web serverBoth
VaultwardenSelf-hosted Bitwarden-compatible password manager (Docker)Both
n8nVisual workflow automation platform (Docker)Both

Apps define a cloud-init script that runs on first boot. Custom apps can be added via the API.

Server Management

Actions

ActionDescription
Start / StopPower on/off the server (billing pauses when stopped)
RebootRestart the server OS
ResizeChange server type/size (requires stop first on some providers)
DeletePermanently remove server and all data

Addons

Pre-built install scripts that can be applied to running servers via SSH:

Claude Code, Docker, Nextcloud, Nginx, Node.js, PostgreSQL, Redis, Vaultwarden

Web Terminal

Each running server has a web-based terminal accessible from the dashboard. Features:

For Claude Code servers, the terminal auto-starts a tmux session with Claude running in ~/app/.

Server Linking

Link servers so they can SSH to each other. A link from Server A → Server B means A can ssh subdomain to reach B.

How it works

  1. A's public key is added to B's authorized_keys
  2. A's private key is written to ~/.ssh/tenka-link-{id}.key
  3. A's ~/.ssh/config gets an entry: Host subdomain pointing to B's IP

File Copy

Linked servers can copy files between each other. The UI provides a two-panel directory browser with push/pull direction. Copies run as background rsync jobs with progress polling.

Billing

How costs are tracked

Hetzner Server Types

TypevCPURAMDisk
cx2224 GB40 GB
cx3248 GB80 GB
cx42816 GB160 GB
cx521632 GB320 GB
cx3348 GB80 GB

AI Proxy

Each deployment gets an AI proxy endpoint at https://dashboard.tenka.cloud/proxy/v1/.

Authentication

Authorization: Bearer tenka-{deployment_id}:{proxy_token}
# or
x-api-key: tenka-{deployment_id}:{proxy_token}

The proxy validates the token and checks that the request IP matches the deployment's public IP. Requests are forwarded to the Anthropic API.

Environment on servers

ANTHROPIC_API_KEY=tenka-{id}:{token}
ANTHROPIC_BASE_URL=https://dashboard.tenka.cloud/proxy/v1/

These are set in /etc/profile.d/claude-code.sh and /etc/environment.

API Reference

Base URL: https://dashboard.tenka.cloud

Authentication: Session cookie (Cookie: session={token})

Auth

MethodPathDescription
POST/api/auth/registerCreate account (email, password, name)
POST/api/auth/loginLogin, returns session cookie
POST/api/auth/logoutInvalidate session
GET/api/auth/meCurrent user info

Apps

MethodPathDescription
GET/api/appsList all available apps
POST/api/appsCreate app (admin)
PATCH/api/apps/{id}Update app settings (admin)

Deployments AWS

MethodPathDescription
GET/api/deploymentsList user's AWS deployments
POST/api/deploymentsCreate AWS deployment
GET/api/deployments/{id}Get deployment detail
POST/api/deployments/{id}/startStart stopped server
POST/api/deployments/{id}/stopStop running server
POST/api/deployments/{id}/rebootReboot server
POST/api/deployments/{id}/resizeChange instance type
POST/api/deployments/{id}/deleteDelete server

Deployments Hetzner

MethodPathDescription
GET/api/hetzner/deploymentsList user's Hetzner deployments
POST/api/hetzner/deploymentsCreate Hetzner deployment
GET/api/hetzner/deployments/{id}Get deployment detail
POST/api/hetzner/deployments/{id}/startStart stopped server
POST/api/hetzner/deployments/{id}/stopStop running server
POST/api/hetzner/deployments/{id}/rebootReboot server
POST/api/hetzner/deployments/{id}/resizeChange server type
POST/api/hetzner/deployments/{id}/deleteDelete server
POST/api/hetzner/deployments/{id}/repair-sshRepair SSH key if auth fails

Unified

MethodPathDescription
GET/api/all-deploymentsList all deployments across providers

Server Links

MethodPathDescription
GET/api/server-links/{deployment_id}List links for a deployment
POST/api/server-linksCreate link (from_id, to_id)
DELETE/api/server-links/{link_id}Remove link
POST/api/server-links/{link_id}/copyCopy files between linked servers
GET/api/copy-status/{job_id}Poll copy job progress

File Browser

MethodPathDescription
GET/api/browse/{deployment_id}?path=/rootList directory contents on server

Billing

MethodPathDescription
GET/api/billing/ratesAWS instance rates
GET/api/billing/daily/{deployment_id}Daily costs for deployment
GET/api/billing/ai-usageAI token usage
GET/api/hetzner/billing/ratesHetzner server rates
GET/api/hetzner/billing/daily/{id}Hetzner daily costs

Admin

MethodPathDescription
GET/api/admin/usersList all users
POST/api/admin/users/{id}/reset-passwordReset user password
GET/api/billing/adminBilling summaries per user
GET/api/billing/admin/ai-usageAI usage across all users
GET/api/admin/guarddutyAWS GuardDuty security findings

Terminal (WebSocket)

ProtocolPathDescription
WS/ws/terminal/{id}AWS server terminal
WS/ws/ssm-terminal/{id}AWS SSM terminal (no SSH key needed)
WS/ws/hetzner-terminal/{id}Hetzner server terminal

Admin Guide

Managing Apps

# Set initial prompt for an app
curl -X PATCH /api/apps/{app_id} \
  -H "Cookie: session=..." \
  -d '{"initial_prompt": "What would you like to build?"}'

# Update cloud-init script
curl -X PATCH /api/apps/{app_id} \
  -d '{"cloud_init_script": "#!/bin/bash\n..."}'

User Management

Admin users can view all users, reset passwords, and see billing across all accounts from the Admin page in the dashboard.

Monitoring


Tenka Cloud © 2026 — Generated 2026-05-28