š³ Portainer OpenClaw Skill - ClawHub
Do you want your AI agent to automate Portainer workflows? This free skill from ClawHub helps with devops & cloud tasks without building custom tools from scratch.
What this skill does
Control Docker containers and stacks via Portainer API. List containers, start/stop/restart, view logs, and redeploy stacks from git.
Install
npx clawhub@latest install portainerFull SKILL.md
Open original| name | description |
|---|---|
| portainer | Control Docker containers and stacks via Portainer API. List containers, start/stop/restart, view logs, and redeploy stacks from git. |
š³ Portainer Skill
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā ā
ā š³ P O R T A I N E R C O N T R O L C L I š³ ā
ā ā
ā Manage Docker containers via Portainer API ā
ā Start, stop, deploy, redeploy ā
ā ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
"Docker containers? I'll handle them from my lily pad." šø
š What Does This Skill Do?
The Portainer Skill gives you control over your Docker infrastructure through Portainer's REST API. Manage containers, stacks, and deployments without touching the web UI.
Features:
- š Status ā Check Portainer server status
- š„ļø Endpoints ā List all Docker environments
- š¦ Containers ā List, start, stop, restart containers
- š Stacks ā List and manage Docker Compose stacks
- š Redeploy ā Pull from git and redeploy stacks
- š Logs ā View container logs
āļø Requirements
| What | Details |
|---|---|
| Portainer | Version 2.x with API access |
| Tools | curl, jq |
| Auth | API Access Token |
Setup
-
Get API Token from Portainer:
- Log into Portainer web UI
- Click username ā My Account
- Scroll to "Access tokens" ā Add access token
- Copy the token (you won't see it again!)
-
Configure credentials:
# Add to ~/.clawdbot/.env PORTAINER_URL=https://your-portainer-server:9443 PORTAINER_API_KEY=ptr_your_token_here -
Ready! š
š ļø Commands
status ā Check Portainer Server
./portainer.sh status
Output:
Portainer v2.27.3
endpoints ā List Environments
./portainer.sh endpoints
Output:
3: portainer (local) - ā online
4: production (remote) - ā online
containers ā List Containers
# List containers on default endpoint (4)
./portainer.sh containers
# List containers on specific endpoint
./portainer.sh containers 3
Output:
steinbergerraum-web-1 running Up 2 days
cora-web-1 running Up 6 weeks
minecraft running Up 6 weeks (healthy)
stacks ā List All Stacks
./portainer.sh stacks
Output:
25: steinbergerraum - ā active
33: cora - ā active
35: minecraft - ā active
4: pulse-website - ā inactive
stack-info ā Stack Details
./portainer.sh stack-info 25
Output:
{
"Id": 25,
"Name": "steinbergerraum",
"Status": 1,
"EndpointId": 4,
"GitConfig": "https://github.com/user/repo",
"UpdateDate": "2026-01-25T08:44:56Z"
}
redeploy ā Pull & Redeploy Stack š
./portainer.sh redeploy 25
Output:
ā Stack 'steinbergerraum' redeployed successfully
This will:
- Pull latest code from git
- Rebuild containers if needed
- Restart the stack
start / stop / restart ā Container Control
# Start a container
./portainer.sh start steinbergerraum-web-1
# Stop a container
./portainer.sh stop steinbergerraum-web-1
# Restart a container
./portainer.sh restart steinbergerraum-web-1
# Specify endpoint (default: 4)
./portainer.sh restart steinbergerraum-web-1 4
Output:
ā Container 'steinbergerraum-web-1' restarted
logs ā View Container Logs
# Last 100 lines (default)
./portainer.sh logs steinbergerraum-web-1
# Last 50 lines
./portainer.sh logs steinbergerraum-web-1 4 50
šÆ Example Workflows
š "Deploy Website Update"
# After merging PR
./portainer.sh redeploy 25
./portainer.sh logs steinbergerraum-web-1 4 20
š§ "Debug Container"
./portainer.sh containers
./portainer.sh logs cora-web-1
./portainer.sh restart cora-web-1
š "System Overview"
./portainer.sh status
./portainer.sh endpoints
./portainer.sh containers
./portainer.sh stacks
š§ Troubleshooting
ā "Authentication required / Repository not found"
Problem: Stack redeploy fails with git auth error
Solution: The stack needs repositoryGitCredentialID parameter. The script handles this automatically by reading from the existing stack config.
ā "Container not found"
Problem: Container name doesn't match
Solution: Use exact name from ./portainer.sh containers:
- Include the full name:
steinbergerraum-web-1notsteinbergerraum - Names are case-sensitive
ā "PORTAINER_URL and PORTAINER_API_KEY must be set"
Problem: Credentials not configured
Solution:
# Add to ~/.clawdbot/.env
echo "PORTAINER_URL=https://your-server:9443" >> ~/.clawdbot/.env
echo "PORTAINER_API_KEY=ptr_your_token" >> ~/.clawdbot/.env
š Integration with Clawd
"Redeploy the website"
ā ./portainer.sh redeploy 25
"Show me running containers"
ā ./portainer.sh containers
"Restart the Minecraft server"
ā ./portainer.sh restart minecraft
"What stacks do we have?"
ā ./portainer.sh stacks
š Changelog
| Version | Date | Changes |
|---|---|---|
| 1.0.0 | 2026-01-25 | Initial release |
šø Credits
@..@
(----)
( >__< ) "Containers are just fancy lily pads
^^ ^^ for your code to hop around!"
Author: Andy Steinberger (with help from his Clawdbot Owen the Frog šø)
Powered by: Portainer API
Part of: Clawdbot Skills Collection
<div align="center">
Made with š for the Clawdbot Community
Ribbit! šø
</div>