by stakpak
Ship your code, on autopilot. An open source agent that lives on your machines 24/7 and keeps your apps running. 🦀
# Add to your Claude Code skills
git clone https://github.com/stakpak/agentLast scanned: 4/28/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-04-28T06:29:40.323Z",
"semgrepRan": false,
"npmAuditRan": true,
"pipAuditRan": true
}agent is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by stakpak. Ship your code, on autopilot. An open source agent that lives on your machines 24/7 and keeps your apps running. 🦀. It has 1,653 GitHub stars.
Yes. agent passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/stakpak/agent" and add it to your Claude Code skills directory (see the Installation section above).
agent is primarily written in Rust. It is open-source under stakpak on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh agent against similar tools.
No comments yet. Be the first to share your thoughts!
:star: Help us reach more developers and grow the Stakpak community. Star this repo!

curl -sSL https://stakpak.dev/install.sh | sh # install Stakpak
stakpak init # understand your apps and tech stack
stakpak autopilot up # start the autonomous agent, running 24/7 in the background
For more installation options...
You can't trust most AI agents with your DevOps. One mistake, and your production is toast. Stakpak is built differently:
Generate infrastructure code, debug Kubernetes, configure CI/CD, automate deployments, without giving an LLM the keys to production.
Use the new lifecycle aliases for one-command setup/start/stop:
stakpak up # alias for: stakpak autopilot up
stakpak down # alias for: stakpak autopilot down
You can also use the canonical subcommands:
stakpak autopilot up
stakpak autopilot status
stakpak autopilot logs
stakpak autopilot down
stakpak autopilot doctor
Before running autopilot on a remote VM:
stakpak up now runs preflight checks before startup, and stakpak autopilot doctor can be used as a deployment-readiness check before first boot:
stakpak autopilot doctor
stakpak up
See also: cli/README.md
~/.stakpak/config.toml: profile behavior (model, allowed_tools, auto_approve, system_prompt, max_turns, provider credentials)~/.stakpak/autopilot.toml: runtime wiring (schedules, channels, notification routes, service/server settings)Use profile = "name" on schedules/channels and keep behavior inside profile definitions. Profiles control how the agent behaves: model, allowed tools, auto-approval, system prompt, max turns, and provider credentials. Notification routes only control where messages are delivered.
Schedule and channel profiles are intentionally separate:
--profile monitoring: behavior for runs started by that schedule--profile ops: behavior for sessions started from inbound Slack/Telegram/Discord messages--target "#ops": where schedule notifications are sent; it does not choose the model or toolsNotification routing uses two words everywhere:
channel: the transport, such as slack, telegram, or discordtarget: the destination inside that transport, such as Slack #ops or C1234567890autopilot channel add ... --target sets the default notification route. Schedules inherit it unless you add --notify-target or --notify-channel.
# default notification route: slack:#ops
stakpak autopilot channel add slack --bot-token "$SLACK_BOT_TOKEN" --app-token "$SLACK_APP_TOKEN" --profile ops --target "#ops"
# schedule runs with the monitoring profile and inherits the default route
stakpak autopilot schedule add health --cron '*/5 * * * *' --prompt 'Check health' --profile monitoring
# schedule still runs with monitoring, but notifies a different Slack target
stakpak autopilot schedule add deploy-watch --cron '*/15 * * * *' --prompt 'Watch deploys' --profile monitoring --notify-target "#deploys"
In ~/.stakpak/autopilot.toml, the same setup is represented as:
[notifications]
channel = "slack"
target = "#ops"
[[schedules]]
name = "health"
cron = "*/5 * * * *"
prompt = "Check health"
profile = "monitoring"
[[schedules]]
name = "deploy-watch"
cron = "*/15 * * * *"
prompt = "Watch deploys"
profile = "monitoring"
notify_target = "#deploys"
Slack public channel names such as #ops are accepted where Slack supports them. Channel IDs are most reliable for private channels, DMs, and scripts.
Full setup guide: cli/README.md
--enable-subagents flag)brew tap stakpak/stakpak
brew install stakpak
To update it you can use
brew update
brew upgrade stakpak
Download the latest binary for your platform from our GitHub Releases.
This image includes the most popular CLI tools the agent might need for everyday DevOps tasks like docker, kubectl, aws cli, gcloud, azure cli, and more.
docker pull ghcr.io/stakpak/agent:latest
You can use your own Anthropic or OpenAI API keys, custom OpenAI compatible endpoint, or a Stakpak API key.
Just run stakpak and follow the instructions which will create a new API key for you.
stakpak
Brave users may encounter issues with automatic redirects to localhost ports during the API key creation flow. If this happens to you:
Copy your new key from the browser paste it in your terminal
stakpak auth login --api-key $STAKPAK_API_KEY
export STAKPAK_API_KEY=<mykey>
stakpak account
# Anthropic
stakpak auth login --provider anthropic --api-key $ANTHROPIC_API_KEY
# OpenAI
stakpak auth login --provider openai --api-key $OPENAI_API_KEY
# Gemini
stakpak auth login --provider gemini --api-key $GEMINI_API_KEY
Create ~/.stakpak/config.toml with one of these configurations:
Option 1: Bring Your Own Keys (BYOK) - Use your Anthropic/OpenAI API keys:
[profiles.byok]
provider = "local"
# Unified model preference field
model = "anthropic/claude-sonnet-4-5"
# Built-in providers - credentials can also be set via environment variables
# (ANTHROPIC_API_KEY, OPENAI_API_KEY, GEMINI_API_KEY)
[profiles.byok.providers.anthropic]
type = "anthropic"
api_key = "sk-ant-..."
[profiles.byok.providers.openai]
type = "openai"
api_key = "sk-..."
[profiles.byok.providers.gemini]
type = "gemini"
api_key =