Stacker – Deploy multi-container Docker stacks with one CLI command Stacker v0.3.0 is a platform that turns any project into a deployable Docker stack with a single CLI command, adding AI-assisted stacker.yml generation from GitHub repos, healthcheck inference, and remote Vault-backed secrets. The update enables users to run 'stacker init --from-github owner/repo --with-ai' to have an LLM (Ollama, OpenAI, or Anthropic) scan project files and generate context-aware configurations, with automatic fallback to template-based generation if the AI provider is unreachable. Stacker is a platform for turning any project into a deployable Docker stack. Add a stacker.yml to your repo, and Stacker generates Dockerfiles, docker-compose definitions, reverse-proxy configs, and deploys locally or to cloud providers — optionally with AI assistance. v0.3.0 highlights: generate stacker.yml from any GitHub repo with stacker init --from-github , infra-service healthcheck inference, remote Vault-backed secrets for deployable service/app targets, paused or failed cloud/server installs retain discovered IP addresses, and cloud-provider firewalls can be managed without SSH. curl -fsSL https://raw.githubusercontent.com/trydirect/stacker/main/install.sh | bash cd my-project stacker init auto-detects project type, generates stacker.yml stacker deploy builds and runs locally via docker compose stacker status check running containers Generate a stacker.yml from a GitHub repository — no clone required. For the best results port mappings, env vars, service context inferred from README and source , use --with-ai : AI-powered recommended — reads README, compose, source files stacker init --from-github owner/repo --with-ai Template-based project type + Dockerfile detection only stacker init -g https://github.com/ArchiveBox/ArchiveBox With --with-ai , Stacker shallow-clones the repo, then uses an LLM Ollama by default to scan project files and generate a context-aware stacker.yml with services, ports, env vars, and healthchecks. Falls back to template detection if the AI provider is unreachable. When environment variables are in the compose file, .env.example and scripts/generate-secrets.sh are also generated. Stacker can scan your project files and use an LLM to generate a tailored stacker.yml : Local AI with Ollama free, private, default stacker init --with-ai OpenAI stacker init --with-ai --ai-provider openai --ai-api-key sk-... Anthropic key from env export ANTHROPIC API KEY=sk-ant-... stacker init --with-ai --ai-provider anthropic If the AI provider is unreachable, Stacker falls back to template-based generation automatically. When the project looks like a simple HTML or Next.js website and the configured Ollama model is qwen2.5-code or qwen2.5-coder , stacker init --with-ai can also bootstrap a website deployment scenario. The bootstrap seeds values from the generated stacker.yml , asks only for the missing deploy inputs, and saves scenario state under .stacker/scenarios/qwen2.5-code/website-deploy/ for later continuation with stacker ai . For the canonical AI/MCP deployment flow — inspect state, explain topology or env provenance, preview a plan, apply it safely, and recover with events or rollback — see AI deployment workflows /trydirect/stacker/blob/main/docs/AI DEPLOYMENT WORKFLOWS.md . For the qwen-specific website scenario flow, including --scenario and --step continuation, see the same guide. name: my-app app: type: node path: ./src ports: - "8080:3000" environment: NODE ENV: production services: - name: postgres image: postgres:16 environment: POSTGRES DB: myapp POSTGRES PASSWORD: ${DB PASSWORD} proxy: type: nginx auto detect: true domains: - domain: app.example.com ssl: auto upstream: app:3000 deploy: target: local or: cloud, server ai: enabled: true provider: ollama model: llama3 monitoring: status panel: true healthcheck: endpoint: /health interval: 30s Full schema reference: docs/STACKER YML REFERENCE.md /trydirect/stacker/blob/main/docs/STACKER YML REFERENCE.md | Component | What it does | Binary | |---|---|---| Stacker CLI | Developer tool — init, deploy, monitor from the terminal | stacker-cli | Stacker Server | REST API + Stack Builder UI + deployment orchestration + MCP Server | server | Status Panel Agent | Deployed alongside your app on the target server — executes commands, streams logs, reports health | separate repo | ┌──────────────┐ ┌──────────────────┐ ┌─────────────────────┐ │ Stacker CLI │────────►│ Stacker Server │────────►│ Status Panel Agent │ │ │ REST │ │ queue │ on target server │ │ stacker.yml │ API │ Stack Builder UI│ pull │ │ │ init/deploy │ │ 85+ MCP tools │◄────────│ health / logs / │ │ status/logs │ │ Vault · AMQP │ HMAC │ restart / exec / │ └──────────────┘ └──────────────────┘ │ deploy app / proxy │ │ └─────────────────────┘ ▼ Terraform + Ansible ──► Cloud Hetzner, DO, AWS, Linode The end-user tool. No server required for local deploys. | Command | Description | |---|---| stacker init | Detect project type, generate stacker.yml + .stacker/ artifacts | stacker deploy | Build & deploy the stack local, cloud, or server . Cloud deploys also install a local SSH backup key when possible. --runtime kata|runc selects container runtime | stacker status | Show running containers and health | stacker logs | View container logs --follow , --service , --tail | stacker secrets | Manage local .env secrets or remote Vault-backed service / server secrets | stacker list deployments / stacker deployments | List deployments on the Stacker server | stacker list servers / stacker servers | List saved servers | stacker list clouds / stacker clouds | List saved cloud credentials | stacker list ssh-keys / stacker ssh-keys | List per-server SSH key status | stacker destroy | Tear down the deployed stack | stacker config validate | Validate stacker.yml syntax | stacker config show | Show resolved configuration | stacker config example | Print a full commented reference | stacker config setup cloud | Guided cloud deployment setup | stacker config setup ai | Configure AI provider, endpoint, model, and tasks | stacker ai ask "question" | Ask the AI about your stack | stacker proxy add | Add a reverse-proxy domain entry | stacker proxy detect | Auto-detect existing reverse-proxy containers | stacker cloud firewall add | Open cloud-provider firewall ports without SSH, for example --public-ports 8000/tcp on Hetzner | stacker cloud firewall remove | Remove Stacker-managed cloud-provider firewall rules | stacker cloud firewall list | List cloud-provider firewall rules for a server | stacker ssh-key generate | Generate a new SSH key pair for a server Vault-backed | stacker ssh-key show | Display the public SSH key for a server | stacker ssh-key upload | Upload an existing SSH key pair for a server | stacker ssh-key inject | Repair Vault-key trust by using an already-working private key to update authorized keys | stacker service add | Add a service from the template catalog to stacker.yml | stacker service list | List available service templates 20+ built-in | stacker agent health | Check Status Panel agent connectivity and health | stacker agent status | Display agent snapshot — containers, versions, uptime | stacker agent list apps / stacker agent apps | List apps for the target deployment | stacker agent list containers / stacker agent containers | List containers on the target server | stacker agent logs