{"_id":"@codelook/codebox","_rev":"4-09b27fc9bd82432ba0e968761a484a1f","name":"@codelook/codebox","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.2":{"name":"@codelook/codebox","version":"0.1.2","keywords":["deploy","deployment","docker","docker-compose","cli","ink","shipit","devops"],"author":{"name":"UEUI Team"},"license":"PolyForm-Noncommercial-1.0.0","_id":"@codelook/codebox@0.1.2","maintainers":[{"name":"foundj","email":"mfj@qq.com"}],"bin":{"codebox":"dist/cli.js"},"dist":{"shasum":"ffa3848e4b1febc520a2a791d557e0a0596cbb7f","tarball":"https://registry.npmjs.org/@codelook/codebox/-/codebox-0.1.2.tgz","fileCount":19,"integrity":"sha512-to4yMpRcKDs0NAKo9E0lZbsxaTnH5yGRYp6+GTvq7X4qirTrOQX9silRcm3BnuwZ4x537KAAIPNMGH3ZOJIqag==","signatures":[{"sig":"MEUCIEOtgsGrQ3ks0pGlyk1jBd6dZfHDT1nvhwXrYFTn+EcWAiEAvXuDxvuFgLL+VieZ45x1Ee3m7wb457h8ARcyw6V8k14=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":554795},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"ebda3d7446a1848c6926992fde2a424ce8831c99","scripts":{"dev":"tsx watch src/cli.tsx","lint":"eslint src --ext .ts,.tsx","test":"vitest","build":"tsup","clean":"rm -rf dist","prepack":"npm run clean && npm run build","lint:fix":"eslint src --ext .ts,.tsx --fix","prebuild":"node scripts/sync-version.js","test:unit":"vitest --config vitest.config.ts --run tests/unit","typecheck":"tsc --noEmit","test:watch":"vitest --watch","publish:npm":"npm publish --access public --registry https://registry.npmjs.org/","test:coverage":"vitest --coverage","prepublishOnly":"npm run build","test:integration":"vitest --config vitest.config.ts --run tests/integration"},"_npmUser":{"name":"foundj","actor":{"name":"foundj","type":"user","email":"mfj@qq.com"},"email":"mfj@qq.com"},"_npmVersion":"10.9.2","description":"Universal deployment CLI with beautiful Ink UI - Deploy your Docker projects with ease","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ink":"^5.0.1","ora":"^8.0.1","zod":"^3.23.8","chalk":"^5.3.0","execa":"^8.0.1","react":"^18.3.1","js-yaml":"^4.1.0","fs-extra":"^11.2.0","node-ssh":"^13.2.0","@inkjs/ui":"^2.0.0","commander":"^12.0.0","ink-spinner":"^5.0.0","ink-gradient":"^3.0.0","ink-text-input":"^6.0.0","ink-select-input":"^6.0.0","@codelook/codebox-registry":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.2","tsup":"^8.1.0","eslint":"^8.57.0","vitest":"^2.1.8","typescript":"^5.5.4","@types/node":"^20.14.11","@types/react":"^18.3.3","@types/js-yaml":"^4.0.9","@types/fs-extra":"^11.0.4","eslint-plugin-react":"^7.34.0","@typescript-eslint/parser":"^6.21.0","eslint-plugin-react-hooks":"^4.6.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/codebox_0.1.2_1751337614297_0.11317094184238896","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@codelook/codebox","version":"0.1.3","keywords":["deploy","deployment","docker","docker-compose","cli","ink","shipit","devops"],"author":{"name":"UEUI Team"},"license":"PolyForm-Noncommercial-1.0.0","_id":"@codelook/codebox@0.1.3","maintainers":[{"name":"foundj","email":"mfj@qq.com"}],"bin":{"codebox":"dist/cli.js"},"dist":{"shasum":"0cfa51fc359e92e24a2766a8da9d7b88adb375db","tarball":"https://registry.npmjs.org/@codelook/codebox/-/codebox-0.1.3.tgz","fileCount":19,"integrity":"sha512-NdFARubwH8b0JFxIaGaxS0NkOw4rHApKPxcj8XybLKsmnL1FPHydUrpgNpQgFhYzRNw/Oct7+3XMOYzIhZaHWA==","signatures":[{"sig":"MEQCIB+UyrJTc39zE4ykKp38hNYvZIT7WLfT9JFDwwHR4HaHAiAjUfG7bJp3T6UKp0GhQFYyYPdP2XUOdIFo+XeLiLsNhQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":554790},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"f84cc84399b3c1182b9fc655dcc462bfd84acfbb","scripts":{"dev":"tsx watch src/cli.tsx","lint":"eslint src --ext .ts,.tsx","test":"vitest","build":"tsup","clean":"rm -rf dist","prepack":"npm run clean && npm run build","lint:fix":"eslint src --ext .ts,.tsx --fix","prebuild":"node scripts/sync-version.js","test:unit":"vitest --config vitest.config.ts --run tests/unit","typecheck":"tsc --noEmit","test:watch":"vitest --watch","publish:npm":"npm publish --access public --registry https://registry.npmjs.org/","test:coverage":"vitest --coverage","prepublishOnly":"npm run build","test:integration":"vitest --config vitest.config.ts --run tests/integration"},"_npmUser":{"name":"foundj","actor":{"name":"foundj","type":"user","email":"mfj@qq.com"},"email":"mfj@qq.com"},"_npmVersion":"10.9.2","description":"Universal deployment CLI with beautiful Ink UI - Deploy your Docker projects with ease","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ink":"^5.0.1","ora":"^8.0.1","zod":"^3.23.8","chalk":"^5.3.0","execa":"^8.0.1","react":"^18.3.1","js-yaml":"^4.1.0","fs-extra":"^11.2.0","node-ssh":"^13.2.0","@inkjs/ui":"^2.0.0","commander":"^12.0.0","ink-spinner":"^5.0.0","ink-gradient":"^3.0.0","ink-text-input":"^6.0.0","ink-select-input":"^6.0.0","@codelook/codebox-registry":"^0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.2","tsup":"^8.1.0","eslint":"^8.57.0","vitest":"^2.1.8","typescript":"^5.5.4","@types/node":"^20.14.11","@types/react":"^18.3.3","@types/js-yaml":"^4.0.9","@types/fs-extra":"^11.0.4","eslint-plugin-react":"^7.34.0","@typescript-eslint/parser":"^6.21.0","eslint-plugin-react-hooks":"^4.6.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/codebox_0.1.3_1751339082804_0.02962130909141547","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@codelook/codebox","version":"0.2.1","keywords":["deploy","deployment","docker","docker-compose","cli","ink","shipit","devops"],"author":{"name":"UEUI Team"},"license":"PolyForm-Noncommercial-1.0.0","_id":"@codelook/codebox@0.2.1","maintainers":[{"name":"foundj","email":"mfj@qq.com"}],"bin":{"codebox":"dist/cli.js"},"dist":{"shasum":"5e1ed9106f3f2f52107353fe4217518e4feb3d9c","tarball":"https://registry.npmjs.org/@codelook/codebox/-/codebox-0.2.1.tgz","fileCount":35,"integrity":"sha512-jj8M6FA69fvJHsGtxyZnwOB1HZ3e040BQIUAqpON1ia+XCfJs6Mewjv4L8E8secZUuQPktwDBri8ZGXXjsLeWA==","signatures":[{"sig":"MEYCIQD966xdcaLlWbZQtwEoVO5atkRnAa5a1I22xZYkiGc/9wIhANixrT2hkEeyQnw4OXJCS+LckliTdUrbT83cx//ZSCS6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":875460},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"gitHead":"1134d8bae4f75cc58c812ba08405b870a274ee04","scripts":{"dev":"tsx watch src/cli.tsx","lint":"eslint src --ext .ts,.tsx","test":"vitest","build":"tsup","clean":"rm -rf dist","prepack":"npm run clean && npm run build","lint:fix":"eslint src --ext .ts,.tsx --fix","prebuild":"node scripts/sync-version.js","test:unit":"vitest --config vitest.config.ts --run tests/unit","typecheck":"tsc --noEmit","test:watch":"vitest --watch","postinstall":"node scripts/postinstall.js","publish:npm":"npm publish --access public --registry https://registry.npmjs.org/","test:coverage":"vitest --coverage","prepublishOnly":"npm run build","test:integration":"vitest --config vitest.config.ts --run tests/integration"},"_npmUser":{"name":"foundj","actor":{"name":"foundj","type":"user","email":"mfj@qq.com"},"email":"mfj@qq.com"},"_npmVersion":"10.9.2","description":"Universal deployment CLI with beautiful Ink UI - Deploy your Docker projects with ease","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ink":"^5.0.1","ora":"^8.0.1","zod":"^3.23.8","axios":"^1.10.0","chalk":"^5.3.0","execa":"^8.0.1","react":"^18.3.1","dotenv":"^16.4.5","js-yaml":"^4.1.0","fs-extra":"^11.2.0","node-ssh":"^13.2.0","@inkjs/ui":"^2.0.0","commander":"^12.0.0","ink-spinner":"^5.0.0","ink-gradient":"^3.0.0","ink-text-input":"^6.0.0","ink-select-input":"^6.0.0","@codelook/codebox-registry":"^0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.2","tsup":"^8.1.0","eslint":"^8.57.0","vitest":"^2.1.8","typescript":"^5.5.4","@types/node":"^20.14.11","@types/react":"^18.3.3","@types/js-yaml":"^4.0.9","@types/fs-extra":"^11.0.4","eslint-plugin-react":"^7.34.0","@typescript-eslint/parser":"^6.21.0","eslint-plugin-react-hooks":"^4.6.0","@typescript-eslint/eslint-plugin":"^6.21.0"},"_npmOperationalInternal":{"tmp":"tmp/codebox_0.2.1_1751426532296_0.9099054585514303","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@codelook/codebox","version":"0.3.0","description":"Universal deployment CLI with beautiful Ink UI - Deploy your Docker projects with ease","keywords":["deploy","deployment","docker","docker-compose","cli","ink","shipit","devops"],"author":{"name":"UEUI Team"},"license":"PolyForm-Noncommercial-1.0.0","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","bin":{"codebox":"dist/cli.js"},"scripts":{"dev":"tsx watch src/cli.tsx","prebuild":"node scripts/sync-version.js","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","lint":"eslint src --ext .ts,.tsx","lint:fix":"eslint src --ext .ts,.tsx --fix","test":"vitest","test:watch":"vitest --watch","test:coverage":"vitest --coverage","test:integration":"vitest --config vitest.config.ts --run tests/integration","test:unit":"vitest --config vitest.config.ts --run tests/unit","publish:npm":"npm publish --access public --registry https://registry.npmjs.org/","prepublishOnly":"npm run build","prepack":"npm run clean && npm run build","postinstall":"node scripts/postinstall.js"},"dependencies":{"@codelook/codebox-registry":"^0.1.1","@inkjs/ui":"^2.0.0","axios":"^1.10.0","chalk":"^5.3.0","commander":"^12.0.0","dotenv":"^16.4.5","execa":"^8.0.1","fs-extra":"^11.2.0","ink":"^5.0.1","ink-gradient":"^3.0.0","ink-select-input":"^6.0.0","ink-spinner":"^5.0.0","ink-text-input":"^6.0.0","js-yaml":"^4.1.0","node-ssh":"^13.2.0","open":"^10.0.0","ora":"^8.0.1","prompts":"^2.4.2","react":"^18.3.1","zod":"^3.23.8"},"devDependencies":{"@types/fs-extra":"^11.0.4","@types/js-yaml":"^4.0.9","@types/node":"^20.14.11","@types/react":"^18.3.3","@typescript-eslint/eslint-plugin":"^6.21.0","@typescript-eslint/parser":"^6.21.0","eslint":"^8.57.0","eslint-plugin-react":"^7.34.0","eslint-plugin-react-hooks":"^4.6.0","tsup":"^8.1.0","tsx":"^4.16.2","typescript":"^5.5.4","vitest":"^2.1.8"},"engines":{"node":">=20"},"publishConfig":{"access":"public"},"_id":"@codelook/codebox@0.3.0","gitHead":"a95c7ab4a7ebf6eeab186aa9ef6b9155611bb531","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-e39OgV/k1dtYftpsQotS/HGR0eRuzxsQdxXcZaJlRpqNLaqdvx0JAJJxF7Zv8GMtseBUJTWXwmzcpW7xT/JBSA==","shasum":"1891b0c35d3bb8a2b19f297abd0e2b8cb5583e8a","tarball":"https://registry.npmjs.org/@codelook/codebox/-/codebox-0.3.0.tgz","fileCount":35,"unpackedSize":1132795,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHI2BTB2h4k+8Y1iM5XjSsdP8TK2C9RI8kstWOgYS2hCAiBbZB950IIDFXOPYRNl3UDK71MLJ+SGV2PPgk8qmYr47g=="}]},"_npmUser":{"name":"foundj","email":"mfj@qq.com","actor":{"name":"foundj","email":"mfj@qq.com","type":"user"}},"directories":{},"maintainers":[{"name":"foundj","email":"mfj@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/codebox_0.3.0_1751509580061_0.4645895348100857"},"_hasShrinkwrap":false}},"time":{"created":"2025-07-01T02:40:14.202Z","modified":"2025-07-03T02:26:20.463Z","0.1.2":"2025-07-01T02:40:14.555Z","0.1.3":"2025-07-01T03:04:43.019Z","0.2.1":"2025-07-02T03:22:12.502Z","0.3.0":"2025-07-03T02:26:20.287Z"},"author":{"name":"UEUI Team"},"license":"PolyForm-Noncommercial-1.0.0","keywords":["deploy","deployment","docker","docker-compose","cli","ink","shipit","devops"],"description":"Universal deployment CLI with beautiful Ink UI - Deploy your Docker projects with ease","maintainers":[{"name":"foundj","email":"mfj@qq.com"}],"readme":"# @codelook/codebox 🚀\n\nCode containerization and deployment platform with beautiful Ink UI - Box your code, ship it anywhere with ease!\n\n## 🆕 最新更新 (v0.1.2)\n\n- **🎨 增强的用户体验**: 更美观的菜单、更清晰的交互界面\n- **🚫 智能错误处理**: 友好的错误信息、建议性解决方案\n- **🔍 输入验证**: 实时验证用户输入，避免配置错误\n- **🔄 服务注册中心**: 集成 @codelook/codebox-registry 进行服务监控\n\n## Features\n\n- 🚀 **Quick Deploy** - Deploy any project with a single command\n- 🐳 **Docker Support** - First-class support for Docker and Docker Compose\n- ☁️ **Edge Platform Support** - Deploy to Cloudflare Workers, Vercel Edge Functions\n- 🤖 **CI/CD Ready** - Full non-interactive mode for automation\n- 🏗️ **Remote Build** - Build Docker images on server (no local Docker required)\n- 📁 **Multi-Project** - Manage multiple projects and deployment configurations\n- 🖥️ **Multi-Server** - Deploy to multiple servers with different environments\n- 🎨 **Beautiful UI** - Interactive Ink-based terminal UI (when available)\n- 📊 **History Tracking** - Track all deployments with rollback capability\n- 🔐 **Secure** - SSH key and password authentication support\n- 🎯 **Smart Detection** - Automatically detects project type and configuration\n- 🌍 **Environment Aware** - Auto-adapts to TTY, CI, and remote environments\n- 🔌 **Extensible** - Plugin architecture for custom deployment platforms\n- 💡 **Smart Error Handling** - Contextual error messages with helpful suggestions\n- ✅ **Input Validation** - Real-time validation prevents configuration errors\n- 📊 **Service Monitoring** - Built-in service registry for health monitoring\n\n## Installation\n\n```bash\n# Using npm\nnpm install -g @codelook/codebox\n\n# Using pnpm (recommended)\npnpm add -g @codelook/codebox\n\n# Using yarn\nyarn global add @codelook/codebox\n\n# Or use without installing\nnpx @codelook/codebox\n```\n\n> **Note**: If you encounter any installation issues, please refer to our detailed [Installation Guide](./INSTALL.md).\n\n## Quick Start\n\n### 1. Initialize your project\n\n```bash\n# In your project directory\ncodebox init\n```\n\nThis will automatically detect your project type (Docker, Docker Compose, Node.js, etc.) and create the initial configuration.\n\n### 2. Add a server\n\n```bash\n# Interactive mode\ncodebox\n\n# Then select \"Servers\" > \"Add New Server\"\n```\n\n### 3. Deploy!\n\n```bash\n# Deploy to all configured servers\ncodebox deploy\n\n# Or use quick deploy from the interactive menu\ncodebox\n# Then select \"Quick Deploy\"\n```\n\n## Project Types\n\nCodeBox automatically detects and supports:\n\n### Traditional Deployment\n- 🐳 **Docker Compose** - Projects with `docker-compose.yml`\n- 🐋 **Docker** - Projects with `Dockerfile`\n- 📦 **Node.js** - Projects with `package.json`\n- 📄 **Static** - Any other project (copies files)\n\n### Edge Platforms (NEW!)\n- ☁️ **Cloudflare Workers** - Projects with `wrangler.toml` or `cloudflare/` directory\n- ▲ **Vercel Edge Functions** - Projects with `vercel.json` or edge functions\n- 🦕 **Deno Deploy** - Projects configured for Deno (coming soon)\n\n## Commands\n\n### Interactive Mode (Default)\n\n```bash\ncodebox\n```\n\nLaunch the beautiful interactive UI to manage everything.\n\n### CLI Commands\n\n```bash\n# Initialize project in current directory\ncodebox init\n\n# Deploy current project\ncodebox deploy [server] [options]\n  -f, --force        Force deployment even if health checks fail\n  -b, --backup       Create backup before deployment\n  --dry-run          Show what would be deployed\n  --remote-build     Build Docker images on remote server\n  --no-interactive   Disable interactive mode\n\n# Deploy to edge platforms\ncodebox deploy-edge <platform> [options]\n  -e, --env          Deployment environment (production/preview/development)\n  --project          Project name override\n  --config           Custom configuration file\n  \n  Platforms: cloudflare, vercel, deno\n\n# Manage servers\ncodebox server list\ncodebox server add <name>\ncodebox server remove <name>\n\n# Service management\ncodebox status              Show status of all deployed services\ncodebox stop <serviceId>    Stop a deployed service\ncodebox start <serviceId>   Start a deployed service\ncodebox destroy <serviceId> Destroy a deployed service\n\n# Show version\ncodebox --version\n```\n\n## Configuration\n\nCodeBox stores its configuration in `~/.codebox/config.json`. This includes:\n\n- Server configurations\n- Project configurations\n- Deployment mappings\n- Deployment history\n- Global settings\n\n## Server Configuration\n\nServers can be configured with:\n\n- **Name** - Friendly name for the server\n- **Host** - IP address or domain\n- **Port** - SSH port (default: 22)\n- **User** - SSH username\n- **Authentication** - SSH key (recommended) or password\n- **Deploy Path** - Where to deploy projects on the server\n\n## Deployment Features\n\n### Health Checks\n\nConfigure health checks to ensure deployments are successful:\n\n```json\n{\n  \"healthCheck\": {\n    \"enabled\": true,\n    \"endpoint\": \"http://localhost:3000/health\",\n    \"interval\": 5000,\n    \"timeout\": 30000\n  }\n}\n```\n\n### Hooks\n\nRun custom commands before or after deployment:\n\n```json\n{\n  \"hooks\": {\n    \"preDeploy\": [\"npm test\", \"npm run build\"],\n    \"postDeploy\": [\"npm run migrate\", \"npm run notify\"]\n  }\n}\n```\n\n### Environment Variables\n\nSet environment variables for your deployments:\n\n```json\n{\n  \"env\": {\n    \"NODE_ENV\": \"production\",\n    \"API_URL\": \"https://api.example.com\"\n  }\n}\n```\n\n## Examples\n\n### Deploy a Docker Compose project\n\n1. Create your `docker-compose.yml`\n2. Run `codebox init`\n3. Add a server: `codebox` > \"Servers\" > \"Add New Server\"\n4. Deploy: `codebox deploy`\n\n### Deploy a Node.js app\n\n1. Ensure your project has a `package.json` with a `start` script\n2. Run `codebox init`\n3. Configure your server\n4. Deploy - CodeBox will automatically:\n   - Upload your files\n   - Run `npm install --production`\n   - Start your app with PM2\n\n### Deploy to Cloudflare Workers\n\n1. Create your `worker.js` or use existing `cloudflare/` directory\n2. Set up your Cloudflare API token:\n   ```bash\n   export CLOUDFLARE_API_TOKEN=your-token\n   ```\n3. Deploy:\n   ```bash\n   codebox deploy-edge cloudflare\n   ```\n\n### Deploy to Vercel Edge Functions\n\n1. Create your edge functions in `api/` directory\n2. Set up your Vercel token:\n   ```bash\n   export VERCEL_TOKEN=your-token\n   ```\n3. Deploy:\n   ```bash\n   codebox deploy-edge vercel --env production\n   ```\n\n## Non-Interactive Mode\n\nCodeBox automatically detects when running in non-interactive environments:\n\n- CI/CD pipelines (`CI=true`)\n- Non-TTY terminals\n- SSH remote execution\n- Docker containers\n\nYou can also force non-interactive mode:\n\n```bash\n# Using environment variable\nCODEBOX_NON_INTERACTIVE=true codebox deploy\n\n# Using command flag\ncodebox deploy --no-interactive\n```\n\n## Health Monitoring\n\nCodeBox includes built-in health monitoring for deployed services:\n\n### Check Service Health\n\n```bash\n# Check all services\ncodebox health-check\n\n# Check specific service\ncodebox health-check edge-myapp-cloudflare-production\n\n# Output as JSON\ncodebox health-check --json\n```\n\n### View Health Summary\n\n```bash\n# Get overview of all services\ncodebox health-summary\n\n# JSON output for integration\ncodebox health-summary --json\n```\n\nHealth check features:\n- 🏥 Automatic health monitoring\n- 📊 Response time tracking\n- 🔔 Status change detection\n- 📈 Historical health data\n- 🔄 Configurable check intervals\n\n## Service Management\n\n### List All Deployments\n\n```bash\n# List edge deployments\ncodebox edge-list\n\n# List all services\ncodebox list\n```\n\n### Stop Services\n\n```bash\n# Stop a service (server deployments only)\ncodebox stop service-id\n\n# Start a stopped service\ncodebox start service-id\n\n# Destroy a service\ncodebox destroy service-id\n```\n\n## Remote Docker Build\n\nNo Docker on your local machine? No problem! Use remote build:\n\n```bash\n# Build Docker images on the server\ncodebox deploy --remote-build\n\n# CodeBox auto-detects if Docker is missing\ncodebox deploy  # Automatically switches to remote build\n```\n\n## Security\n\n- SSH keys are recommended over passwords\n- All credentials are stored locally in your home directory\n- No credentials are ever sent to third parties\n- Use environment variables for sensitive data\n\n## Troubleshooting\n\n### SSH Connection Issues\n\n- Ensure your SSH key has proper permissions: `chmod 600 ~/.ssh/id_rsa`\n- Test connection manually: `ssh user@host`\n- Check firewall settings on the server\n\n### Docker Issues\n\n- Ensure Docker is installed on the server\n- User must have Docker permissions: `sudo usermod -aG docker $USER`\n- Check Docker daemon is running: `systemctl status docker`\n- If local Docker is missing, use `--remote-build` flag\n\n### Non-Interactive Mode Issues\n\n- If you see \"Raw mode is not supported\", you're in a non-TTY environment\n- Use `codebox deploy` instead of just `codebox`\n- Set `CODEBOX_NON_INTERACTIVE=true` to suppress warnings\n- For server configuration, edit `~/.codebox/config.json` directly\n\n### Port Issues\n\n- Ensure required ports are open on the server\n- Check for port conflicts with existing services\n- Use health checks to verify services are accessible\n\n## Contributing\n\nContributions are welcome! Please read our contributing guidelines and submit PRs.\n\n## License\n\nPolyForm Noncommercial License 1.0.0 - see LICENSE file for details.\n\n---\n\nMade with ❤️ by the UEUI Team","readmeFilename":"README.md"}