Poco is one CLI for Docker, Kubernetes and Helm: catalogue and run compose projects, switch kubectl context and namespace, and list Helm repos and releases β without leaving your terminal or remembering three different tools.
-
Docker β
poco up,poco down,poco ps,poco status(overview), compose config, build, pull; YAML catalog and plans. -
Kubernetes β
poco kubectx,poco kubens(list/switch context and namespace);poco kube-get pods|ns|svc|...; presets (context+namespace in one command). -
Helm β
poco helm-repos,poco helm-list(releases; optional--all-namespaces,-ito pick and show status). -
Simple. Configure, run and switch between projects with a very simple command line interface.
-
Flexibility. Manage, scale, maintain projects of any complexity with ease.
-
Configure Once, Use Everywhere. Configure project once so the rest of your team will feel the value of zero configuration.
- Docker, Kubernetes, Helm in one place β Compose projects, kubectl context/namespace, Helm repos and releases.
- Git, SVN support out of the box.
- Project Catalog, Multiple Catalogues. Create your own project catalog. Organise your projects without additional tools.
- Multiple Plans. Create multiple plans for different environments or even environments for demo purposes. Switch between plans (environments) with ease.
- Simple Config Files. Poco helps to split config files, so it is easy to maintain and scale them any time.
- Script Support (Hooks). Add additional scripts any time.
-i,--interactiveβ Interactive menu: choose actions step by step without typing commands (poco -i).-V,--verboseβ Print more (e.g. merged docker compose config forup/down).-VVor--no-matrixβ No matrix effect, show full output (forup/down). Implies verbose.-q,--quietβ Print less.--offlineβ Offline mode.--always-updateβ Project repository handle by user.
For poco up / poco down, the matrix-style effect is off until you enable it. The install script and the first interactive poco command ask whether to turn it on. The answer is saved in ~/.poco/settings.yml. Change it later with poco matrix on or poco matrix off. POCO_MATRIX=1 or POCO_MATRIX=0 overrides the saved choice for that process. -VV / --no-matrix turns the effect off for one run and shows the full log.
All documentation is available on getpoco.io
- Python 3.12.3 or newer (supported version: 3.14.10)
- Git or SVN
- SSH
- Docker (17.0.0 or higher version is recommended)
- Docker Compose V2 (plugin:
docker compose), for compose support - kubectl, for Kubernetes support
- helm, for helm functionality support
Install poco:
$:~ pip install poco
Or use the install script (curl one-liner):
bash -c "$(curl -fsSL https://raw.githubusercontent.com/shiwaforce/poco/master/install.sh)"Install script options:
| Option | Description |
|---|---|
| Full reset | Remove previous install, then install fresh: bash -c "$(curl -fsSL https://raw.githubusercontent.com/shiwaforce/poco/master/install.sh)" -- --reset |
| Self-update | Update the install script itself: bash -c "$(curl -fsSL https://raw.githubusercontent.com/shiwaforce/poco/master/install.sh)" -- --update |
| Dev branch | Install from dev branch: bash -c "$(curl -fsSL https://raw.githubusercontent.com/shiwaforce/poco/master/install.sh)" -- dev |
Init project:
$:~ mkdir my-project
$:~ cd my-project
$:~ poco init
poco.yml and docker-compose.yml example files will be created.
Start project:
$:~ poco up
Before adding your project to Poco Repo create new empty git repository, add repository to your local Poco Repo config:
$:~ poco repo add <name> <git-url>
Now you can add your project to repo:
$:~ poco project add [<target-dir>] [<catalog>]
Publish your changes:
$:~ poco repo push
Stop your project:
$:~ poco stop
| Stack | Poco commands | What you get |
|---|---|---|
| Docker | poco up, poco down, poco ps, poco config, β¦ |
Compose projects from a YAML catalog; matrix-style run; verbose merged config. |
| Kubernetes | poco kubectx, poco kubens |
List/switch context and namespace (kubectx/kubens-style). |
| Helm | poco helm-repos, poco helm-list |
List repos and releases; helm-list --all-namespaces for all. |
Requires Docker and/or kubectl/helm installed. Poco checks availability and works with different kubectl/helm versions.
Save and switch context + namespace in one step:
poco preset listβ List saved presets.poco preset use <name>β Switch to a preset (context and namespace).poco preset save <name>β Save current context and namespace as a preset.
Presets are stored in ~/.poco/presets.yml.
Shortcut for common kubectl get usage:
poco kube-get <resource> [name]β e.g.poco kube-get pods,poco kube-get ns,poco kube-get svc.- Use
-n <namespace>or-A(all namespaces) when needed.
When a command can show a list, use -i to pick from a menu (or fzf if installed):
poco kubectx -iβ Choose context from list.poco kubens -iβ Choose namespace from list.poco preset use -iβ Choose preset from list.poco helm-list -iβ Choose release, then showhelm status.
- Python: Supported runtime is 3.14.10 (released 2026-10-25), which includes interpreter security fixes. poco still runs on Python 3.12.3 or newer and prints a notice when the interpreter is older than 3.14.10.
- Dependencies: We track known vulnerabilities and bump affected packages (e.g. GitPython β₯3.2.1 for CVE fixes). To audit your install:
pip install pip-audit && pip-audit(orpip-audit -r requirements.txt). - Build tools: Keep setuptools and wheel up to date:
pip install -U setuptools wheelto address CVEs in the toolchain.
Use Poco with AI coding agents (Cursor, Claude Code, etc.): install Agent Skills so the agent knows when and how to run poco. Add the poco-skills repo as a Remote Rule: Settings > Rules > Add Rule > Remote Rule (Github) with shiwaforce/poco-skills. Optionally, run poco init --with-cursor-skill in a project to generate a project-specific skill (.cursor/skills/poco-project/SKILL.md).
See CHANGELOG.md for release history. 1.0 β Docker + Kubernetes + Helm in one CLI; presets; kube-get; interactive menu (poco -i); poco status; matrix effect; before_docker_script; security (GitPython, pip-audit).
MIT Copyright (c) 2017-present, Shiwaforce.com