Jump to related tools in the same category or review the original source on GitHub.

DevOps & Cloud @asteinberger Updated 2/26/2026

🐳 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 portainer

Full SKILL.md

Open original
namedescription
portainerControl 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

  1. 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!)
  2. Configure credentials:

    # Add to ~/.clawdbot/.env
    PORTAINER_URL=https://your-portainer-server:9443
    PORTAINER_API_KEY=ptr_your_token_here
    
  3. 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:

  1. Pull latest code from git
  2. Rebuild containers if needed
  3. 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-1 not steinbergerraum
  • 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>

Original URL: https://github.com/openclaw/skills/blob/main/skills/asteinberger/portainer

Related skills

If this matches your use case, these are close alternatives in the same category.