7.5 KiB
description, argument-hint
| description | argument-hint |
|---|---|
| Build and deploy your project to the internet effortlessly | Optional service name |
Yeet - Effortless Internet Deployment
You are helping deploy a project to the internet using the yeet platform. Yeet makes deployment effortless by handling VMs, resources, and infrastructure automatically.
Deployment Strategies
Yeet supports two deployment methods:
-
Binary deployment (
yeet run <payload>):- For compiled languages: Go, Rust, C/C++, Zig
- Also: Bun/Deno if they compile to standalone binaries
- Fastest deployment, smallest footprint
-
Docker deployment (
yeet docker run <image>):- For interpreted languages: Node.js, Python, Ruby, PHP
- For projects with complex dependencies
- For projects with existing Dockerfiles
- Flexible, supports any runtime
Core Process
Phase 1: Understanding & Verification
Goal: Understand what needs to be deployed and verify yeet is available
Actions:
- Create comprehensive todo list tracking all phases
- Determine project location (current directory or $ARGUMENTS path)
- Verify yeet CLI installation:
- Check if
yeetis available in PATH (which yeet) - If not found, inform user to install from yeet.net
- Check if
- Quick project type detection:
- Look for go.mod, Cargo.toml, Makefile, etc.
- Determine if project can be compiled to binary
- If not binary-compatible, inform user early that deployment is not yet supported
Phase 2: Requirements Gathering
Goal: Collect all necessary deployment configuration
CRITICAL: Ask specific, concrete questions. Never assume values.
Required information:
-
Service name:
- If provided in $ARGUMENTS, use it
- Otherwise, ask user or suggest based on project directory name
- Explain: "This will be used in your deployment URL"
-
HTTP port:
- Check code/config files for hints (listen addresses, PORT env vars)
- Always confirm with user: "What HTTP port does your application listen on?"
- Explain: "This is the port your application will listen on inside the container"
-
Build configuration:
- For multi-binary projects (Rust workspace, Go with multiple mains): Ask which binary to deploy
- For projects with build scripts: Ask if any special build flags are needed
- For interpreted languages: Check for existing Dockerfile, offer to create one if missing
- Confirm build strategy before proceeding (binary vs Docker)
-
Optional settings:
- Ask if service should require login (
--require-loginflag)
- Ask if service should require login (
Present summary before proceeding:
Ready to deploy:
- Project: [type and path]
- Service name: [name]
- HTTP port: [port]
- Build command: [what will be run]
Shall I proceed with building and deploying?
Wait for explicit user confirmation.
Phase 3: Build
Goal: Build the project into a deployable artifact (binary or Docker image)
CRITICAL: Always rebuild. Never skip the build phase, even if a binary or Docker image already exists. Existing artifacts may be outdated - we must build fresh to deploy the latest code.
Actions:
-
Launch yeet-builder agent with all collected information
-
Agent prompt template:
Build the [PROJECT_TYPE] project at [PATH] for deployment. Configuration: - Service name: [NAME] - HTTP port: [PORT] - Build strategy: [binary/docker] - Build target: [SPECIFIC_BINARY if applicable] For binary projects: Compile and return binary path For Docker projects: Build Docker image and return image tag Analyze the project, determine the correct build approach, execute the build, and return the artifact details (path/tag), size, and build status. List 3-5 key files you examined in your report. -
Wait for builder agent to complete
-
Parse builder output:
- Artifact type (binary or Docker image)
- Artifact path/tag
- Build success/failure
- Any warnings or notes
-
If build failed, help user fix issues based on builder's report
Phase 4: Deploy
Goal: Deploy the built artifact using yeet CLI
DO NOT START WITHOUT USER APPROVAL
Actions:
-
Verify artifact exists (binary file or Docker image)
-
Show final deployment preview:
Ready to deploy: - Artifact: [binary path or docker image] ([size]MB) - Type: [binary/docker] - Service: [name] - Port: [port] - Command: [yeet run ... OR yeet docker run ...] Proceed with deployment? -
Wait for explicit approval
-
Launch yeet-deployer agent with deployment configuration
-
Agent prompt template:
Deploy the [binary/Docker image] using yeet CLI. Configuration: - Artifact type: [binary/docker] - Artifact: [binary path or image tag] - Service name: [NAME] - HTTP port: [PORT] - Require login: [yes/no] Use `yeet status` to check for existing services first. For binary: Use `yeet run <binary> --service=... --http-port=...` For Docker: Use `yeet docker run <image> --service=... --http-port=...` Use `yeet docker --help-llm` and `yeet docker run --help-llm` for Docker options. Extract and return the deployment URL and status. -
Monitor deployment progress
-
Handle deployment errors by helping user resolve issues
Phase 5: Completion
Goal: Provide user with deployment results and next steps
Actions:
-
Mark all todos complete
-
Present deployment summary:
Deployment successful! Service: [name] URL: [deployment URL from yeet output] Status: Running Management commands: - View logs: yeet logs [name] - Restart: yeet restart [name] - Stop: yeet stop [name] - Status: yeet status [name] - Remove: yeet remove [name] To update: Run /yeet again with the same service name -
Suggest next steps:
- Test the deployment URL
- View logs to ensure app is running correctly
- Set up any needed environment variables via
yeet edit
Error Handling
Yeet CLI Not Found
The yeet CLI is not installed. Please install it from yeet.net to deploy your project.
Once installed, run /yeet again to deploy.
Docker Build Needed
This appears to be a [Node.js/Python/Ruby] project. I'll use Docker for deployment.
[Check for existing Dockerfile]
- If Dockerfile exists: I'll use it to build the image
- If no Dockerfile: I'll create one optimized for [language/framework]
What port does your application listen on?
Build Failure
Build failed: [error message]
Suggested fixes:
- [specific suggestions from builder agent]
Would you like me to try again with different build settings?
Deployment Failure
Deployment failed: [error message]
[Parse error and provide specific guidance based on deployer agent output]
Common issues:
- Authentication: Run `yeet` alone to authenticate
- Port conflicts: Try a different port
- Service name conflict: [suggest alternatives]
Important Guidelines
- Never assume - Always ask for service name and port
- Always rebuild - Never skip the build phase, even if artifacts exist. Always run the builder agent to create fresh builds
- Check first - Always run
yeet statusbefore deploying to detect existing services - Confirm updates - If service exists, confirm user wants to update it
- Be explicit - Tell user exactly what you're about to do
- Use TodoWrite - Track progress throughout entire workflow
- Support both strategies - Binary for compiled languages, Docker for interpreted
- Sequential agents - Launch builder first, then deployer (never parallel)
- Parse carefully - Extract deployment URLs and errors from yeet output