mirror of
https://github.com/OpenRouterTeam/spawn.git
synced 2026-05-22 19:54:22 +00:00
Implemented the following IONOS cloud combinations: - ionos/openclaw - ionos/nanoclaw - ionos/codex - ionos/interpreter - ionos/gemini - ionos/amazonq - ionos/cline - ionos/gptme - ionos/opencode - ionos/plandex - ionos/kilocode - ionos/continue All scripts follow the standard IONOS pattern: 1. Source ionos/lib/common.sh with local/remote fallback 2. Resolve IONOS credentials (IONOS_USERNAME, IONOS_PASSWORD) 3. Generate SSH key 4. Create server with cloud-init 5. Wait for SSH and cloud-init completion 6. Install agent (npm, pip, or curl installer) 7. Get OpenRouter API key via OAuth 8. Inject environment variables 9. Launch interactive session Updated manifest.json to mark all 12 combinations as implemented. Agent: gap-filler-4 Co-authored-by: B <6723574+louisgv@users.noreply.github.com> Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
67 lines
2.1 KiB
Bash
67 lines
2.1 KiB
Bash
#!/bin/bash
|
|
set -eo pipefail
|
|
|
|
# Source common functions - try local file first, fall back to remote
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" 2>/dev/null && pwd)"
|
|
# shellcheck source=ionos/lib/common.sh
|
|
if [[ -f "${SCRIPT_DIR}/lib/common.sh" ]]; then
|
|
source "${SCRIPT_DIR}/lib/common.sh"
|
|
else
|
|
eval "$(curl -fsSL https://raw.githubusercontent.com/OpenRouterTeam/spawn/main/ionos/lib/common.sh)"
|
|
fi
|
|
|
|
log_info "Open Interpreter on IONOS Cloud"
|
|
echo ""
|
|
|
|
# 1. Resolve IONOS credentials
|
|
ensure_ionos_credentials
|
|
|
|
# 2. Generate SSH key
|
|
ensure_ssh_key
|
|
|
|
# 3. Get server name and create server
|
|
SERVER_NAME=$(get_server_name)
|
|
create_server "${SERVER_NAME}"
|
|
|
|
# 4. Wait for SSH and cloud-init
|
|
verify_server_connectivity "${IONOS_SERVER_IP}"
|
|
wait_for_cloud_init "${IONOS_SERVER_IP}" 60
|
|
|
|
# 5. Install Open Interpreter
|
|
log_warn "Installing Open Interpreter..."
|
|
if ! run_server "${IONOS_SERVER_IP}" "command -v interpreter" >/dev/null 2>&1; then
|
|
run_server "${IONOS_SERVER_IP}" "pip install open-interpreter 2>/dev/null || pip3 install open-interpreter"
|
|
fi
|
|
|
|
# Verify installation succeeded
|
|
if ! run_server "${IONOS_SERVER_IP}" "command -v interpreter &> /dev/null"; then
|
|
log_error "Open Interpreter installation verification failed"
|
|
log_error "The 'interpreter' command is not available on server ${IONOS_SERVER_IP}"
|
|
exit 1
|
|
fi
|
|
log_info "Open Interpreter installation verified successfully"
|
|
|
|
# 6. Get OpenRouter API key
|
|
echo ""
|
|
if [[ -n "${OPENROUTER_API_KEY:-}" ]]; then
|
|
log_info "Using OpenRouter API key from environment"
|
|
else
|
|
OPENROUTER_API_KEY=$(get_openrouter_api_key_oauth 5180)
|
|
fi
|
|
|
|
log_warn "Setting up environment variables..."
|
|
inject_env_vars_ssh "${IONOS_SERVER_IP}" upload_file run_server \
|
|
"OPENROUTER_API_KEY=${OPENROUTER_API_KEY}" \
|
|
"OPENAI_API_KEY=${OPENROUTER_API_KEY}" \
|
|
"OPENAI_BASE_URL=https://openrouter.ai/api/v1"
|
|
|
|
echo ""
|
|
log_info "IONOS server setup completed successfully!"
|
|
log_info "Server: ${SERVER_NAME} (ID: ${IONOS_SERVER_ID}, IP: ${IONOS_SERVER_IP})"
|
|
echo ""
|
|
|
|
# 7. Start Open Interpreter interactively
|
|
log_warn "Starting Open Interpreter..."
|
|
sleep 1
|
|
clear
|
|
interactive_session "${IONOS_SERVER_IP}" "source ~/.zshrc && interpreter"
|