Satellite Registration
DeployStack Satellite implements automatic registration with the Backend during startup. This document covers the complete registration process, environment variable requirements, validation rules, and upsert logic for satellite restarts.Persistent Storage
API Key Persistence
Satellites automatically save their registration credentials to persistent storage to avoid re-registration on restart: Storage Location:Registration Token Usage
Single-Use Registration Flow:- First startup: Uses registration token → Saves API key to file
- Subsequent startups: Uses saved API key → No token needed
- Token expiration: Only affects first-time registration
- No re-registration: Satellites restart without consuming new tokens
- Server restarts: Automatic recovery after system reboots
- Development workflow: Frequent restarts don’t require new tokens
Storage Management
Automatic Operations:- Save: Credentials saved after successful registration
- Load: Credentials loaded on startup before attempting registration
- Verify: API key verified with backend heartbeat
- Clear: Invalid credentials automatically cleared
Important: The
persistent_data/
directory must be writable by the satellite process. In production deployments, ensure proper volume mounting and permissions.Registration Overview
Automatic Registration Flow
Satellites register automatically during startup following this sequence:Secure Token-Based Registration
The registration system requires valid JWT registration tokens for security:- Token Required: All satellites must provide valid registration tokens during startup
- Single-Use: Registration tokens are consumed after successful pairing
- Admin-Controlled: Only administrators can generate registration tokens
- No Open Registration: Satellites cannot register without proper authorization
Environment Variables
Required Configuration
Registration Token Requirements
Token Types and Sources
Satellites require registration tokens generated by administrators: Global Satellite Tokens:- Format:
deploystack_satellite_global_eyJhbGc...
- Generated by:
global_admin
users via backend API - Scope: Can register global satellites serving all teams
- Expiration: 1 hour (configurable)
- Format:
deploystack_satellite_team_eyJhbGc...
- Generated by:
team_admin
users for specific teams - Scope: Can register team satellites for specific team only
- Expiration: 24 hours (configurable)
Security Model
All satellites register with secure defaults controlled by the backend:- Token-Based Pairing: Valid JWT registration token required
- Satellite Type: Determined by token scope (global or team)
- Status: Always
inactive
(requires admin activation) - Single-Use Tokens: Registration tokens consumed after successful pairing
Satellite Name Validation
Validation Rules
TheDEPLOYSTACK_SATELLITE_NAME
environment variable must meet strict requirements:
Length Constraints:
- Minimum: 10 characters
- Maximum: 32 characters
- Allowed: lowercase letters (a-z), numbers (0-9), hyphens (-), underscores (_)
- Forbidden: uppercase letters, spaces, special characters
Fail-Fast Validation
Satellite validates the name before any other operations and exits immediately with clear German error messages:Registration Data Structure
System Information Collection
Satellites automatically collect and send system information during registration:satellite_type
: Always set to'global'
by backendteam_id
: Always set tonull
by backend (admin can change later)status
: Always set to'inactive'
by backend (requires admin activation)
MCP Server Capabilities
Satellites report their supported MCP server types:- stdio: Local MCP servers as child processes
- http: HTTP MCP servers (planned)
- sse: SSE MCP servers (planned)
Database Integration
Satellite Tables
The Backend maintains satellite state across five database tables:- satellites: Core satellite registry and configuration
- satelliteCommands: Command queue for satellite management
- satelliteProcesses: MCP server process tracking
- satelliteUsageLogs: Usage analytics and audit trails
- satelliteHeartbeats: Health monitoring and status updates
services/backend/src/db/schema.sqlite.ts
for complete schema definitions.
Registration Database Operations
New Satellite Registration:- All satellites are created with
satellite_type='global'
,team_id=NULL
,status='inactive'
- Admin activation required before satellite can be used
- Team assignment controlled via backend admin interface
Development Setup
Local Registration Testing
Expected Registration Output
Token Expiration and Re-Registration
Registration tokens are single-use and expire:Security Considerations
API Key Management
- Generation: 32-byte cryptographically secure random keys
- Storage: Backend stores argon2 hash, satellite receives plain key
- Rotation: New API key generated on every registration
- Scope: API keys are scoped to satellite type (global vs team)
Centralized Security Model
All Satellites are Global:- Name uniqueness enforced globally across all satellites
- All satellites start as
inactive
and require admin activation - Team assignment controlled exclusively by backend administrators
- No client-side configuration of security-sensitive parameters
- Satellites can be assigned to teams via backend admin interface
- Team assignment changes satellite behavior and resource access
- Resource isolation enforced at runtime based on team assignment
Troubleshooting
Common Registration Issues
Missing Environment Variable:Debug Endpoints
Use these endpoints to troubleshoot registration issues:Implementation Status
Current Implementation:- ✅ Automatic registration during startup
- ✅ Mandatory DEPLOYSTACK_SATELLITE_NAME validation
- ✅ Upsert registration logic for restarts
- ✅ System information collection
- ✅ API key generation and management
- ✅ Database integration with 5 satellite tables
- ✅ Fail-fast validation with clear error messages
- ✅ Centralized security model (no client-controlled type/team assignment)
- ✅ Default inactive status requiring admin activation
- ✅ JWT-based registration token system prevents unauthorized satellites
- ✅ Single-use tokens with cryptographic validation
- ✅ Admin-controlled token generation with proper scope enforcement
- ✅ All satellites register as
inactive
requiring admin activation
- ✅ JWT-based registration token system (Phase 3 complete)
- ✅ Bearer token authentication for Backend communication
- 🚧 Admin interface for registration token management (Phase 4)
- 🚧 Satellite client registration token support (Phase 5)
- 🚧 API key rotation and renewal
- 🚧 Registration status monitoring and alerts
The satellite registration system implements secure JWT-based pairing to prevent unauthorized satellite connections. Once registered with a valid token, satellites receive permanent API keys for ongoing communication. See Backend API Security for complete token management details.