Why Polycrate?
Why Polycrate: simple actions instead of tool chaos, the toolchain inside a container, a single workspace.poly, team-friendly operations, reuse of existing code, Ansible integration, OCI registries for blocks and Git.
Why Polycrate?
Simple actions instead of tool chaos
Complex playbooks and deployments live inside blocks. Users only run actions — without having to know Ansible/Helm details:
# block.poly
name: nginx
actions:
- name: install
playbook: install.yml
- name: uninstall
playbook: uninstall.yml
- name: status
playbook: status.yml
polycrate run nginx install
polycrate run nginx status
Toolchain in the container
Ansible, kubectl, Helm, Python and more ship inside the Polycrate image. No patchwork of versions on your laptop is needed to get started with blocks.
One workspace.poly
The workspace describes blocks and config centrally in YAML. No custom DSL.
# workspace.poly
name: my-workspace
organization: acme
blocks:
- name: cluster
from: registry.acme.corp/infra/k8s:1.0.0
- name: myapp
from: registry.acme.corp/apps/myapp:1.0.0
config:
replicas: 2
Kubeconfig and inventory typically exist once per workspace (artifacts/secrets/kubeconfig.yml, inventory.yml) — not via block-to-block from: chains. → Best practices
Team-friendly
The same actions for ops and less technical colleagues (install, restart, log actions). The implementation stays in the playbook.
Existing code remains usable
Polycrate executes — existing Ansible/Python/script logic becomes a block, without a rewrite.
Ansible integration
Inventory, SSH keys and kubeconfig are mounted consistently for runs. Details: Ansible, SSH.
OCI registry for blocks
Blocks are OCI images. Push/pull against Harbor, Docker Hub or any compatible registry — always with the full path:
polycrate blocks pull registry.acme.corp/blocks/k8s/cluster:0.0.1
polycrate blocks push registry.acme.corp/infra/my-block
→ Registry
Git
A workspace contains config, blocks and secrets artifacts and can be versioned like any repo. → Git