{"_id":"@arcaelas/pctl","name":"@arcaelas/pctl","dist-tags":{"latest":"1.1.0"},"versions":{"1.1.0":{"name":"@arcaelas/pctl","version":"1.1.0","description":"Declarative pod orchestrator for Kubernetes deployments","license":"ISC","main":"build/index.js","bin":{"pctl":"build/index.js"},"author":{"name":"Arcaelas Insiders","email":"comunity@arcaelas.com","url":"https://github.com/arcaelas"},"repository":{"type":"git","url":"git+https://github.com/arcaelas/pctl.git"},"bugs":{"url":"https://github.com/arcaelas/pctl/issues","email":"community@arcaelas.com"},"homepage":"https://github.com/arcaelas/pctl","keywords":["pctl","kubernetes","docker","aws","gcp","eks","gke","orchestrator","deploy","arcaelas"],"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"scripts":{"build":"tsc && tsc-alias","docs":"mkdocs gh-deploy --force","lint":"eslint src/","lint:fix":"eslint src/ --fix","prepublishOnly":"yarn build && npm version minor","postpublish":"rm -rf build/"},"dependencies":{"@arcaelas/utils":"^2.0.8","@aws-crypto/sha256-js":"^5.2.0","@aws-sdk/client-cloudformation":"^3.1012.0","@aws-sdk/client-ecr":"^3.1012.0","@aws-sdk/client-eks":"^3.1012.0","@aws-sdk/client-ssm":"^3.1012.0","@aws-sdk/client-sts":"^3.1012.0","@aws-sdk/util-format-url":"^3.972.8","@kubernetes/client-node":"^1.4.0","yaml":"^2.8.2","yargs":"^18.0.0","zod":"^4.3.6"},"devDependencies":{"@eslint/js":"^10.0.1","@types/node":"^22.13.0","@types/yargs":"^17.0.35","eslint":"^10.0.3","prettier":"^3.8.1","tsc-alias":"^1.8.0","tsx":"^4.21.0","typescript":"^5.9.3","typescript-eslint":"^8.57.1"},"_id":"@arcaelas/pctl@1.1.0","gitHead":"2a690476543c09711344eff71dea0839d1693eaa","types":"./build/index.d.ts","_nodeVersion":"20.20.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-KkwuFlqB1SN8eKtvdtNIcQa6m28Ex1InOeANi+6GsQYOb6GZoEU35oqQYNmkftdhCwWnLK/9JXRGacmlP+fapw==","shasum":"51b537bd23ed7ebb3b2ee2a14f7193f90c9c01a7","tarball":"https://registry.npmjs.org/@arcaelas/pctl/-/pctl-1.1.0.tgz","fileCount":36,"unpackedSize":165311,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC7MEclI085ezppS9ciZQ7lqY7xQJAf8tCQKrSMLFV7FQIgGLwFei2X1m6F69s2D6r3HLrgquZrvwMwXIQgC5DZwXI="}]},"_npmUser":{"name":"arcaelas","email":"arcaela.reyes@gmail.com"},"directories":{},"maintainers":[{"name":"arcaelas","email":"arcaela.reyes@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pctl_1.1.0_1773964873528_0.9617904633970877"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-20T00:01:13.404Z","1.1.0":"2026-03-20T00:01:13.699Z","modified":"2026-03-20T00:01:13.891Z"},"maintainers":[{"name":"arcaelas","email":"arcaela.reyes@gmail.com"}],"description":"Declarative pod orchestrator for Kubernetes deployments","homepage":"https://github.com/arcaelas/pctl","keywords":["pctl","kubernetes","docker","aws","gcp","eks","gke","orchestrator","deploy","arcaelas"],"repository":{"type":"git","url":"git+https://github.com/arcaelas/pctl.git"},"author":{"name":"Arcaelas Insiders","email":"comunity@arcaelas.com","url":"https://github.com/arcaelas"},"bugs":{"url":"https://github.com/arcaelas/pctl/issues","email":"community@arcaelas.com"},"license":"ISC","readme":"![Arcaelas Insiders Banner](https://raw.githubusercontent.com/arcaelas/dist/main/banner/svg/dark.svg#gh-dark-mode-only)\n![Arcaelas Insiders Banner](https://raw.githubusercontent.com/arcaelas/dist/main/banner/svg/light.svg#gh-light-mode-only)\n\n# @arcaelas/pctl\n\n**Declarative pod orchestrator for multi-cloud container deployments.**\n\n[![npm version](https://badge.fury.io/js/@arcaelas%2Fpctl.svg)](https://www.npmjs.com/package/@arcaelas/pctl)\n[![TypeScript](https://img.shields.io/badge/TypeScript-ready-blue.svg)](https://www.typescriptlang.org/)\n[![License](https://img.shields.io/badge/license-Custom-orange.svg)](LICENSE)\n\nOne YAML. Multiple providers. Zero vendor lock-in.\n\n## What is PCTL?\n\nPCTL takes a single configuration file and deploys your containerized services to **AWS EKS**, **Google Cloud GKE**, or **Docker** (local and remote via SSH). It handles building images, pushing to registries, creating Kubernetes manifests, managing state, and cleaning up resources.\n\n## Features\n\n- **Declarative** - Define services, scaling, storage, and health checks in YAML\n- **Multi-provider** - Deploy to AWS, GCP, or Docker from the same config\n- **Resolvers** - Dynamic values with `${env:KEY}`, `${ssm:/path}`, `${cfn:export}`, `${self:path}`\n- **Plugins** - Extensible pipeline for custom transformations\n- **Diff-based** - Only redeploys what changed (fingerprinting)\n- **State tracking** - JSON state file for clean destroy\n- **Registry agnostic** - ECR, Artifact Registry, GHCR, Docker Hub\n- **Auto-scaling** - HPA support for Kubernetes providers\n- **RBAC** - ServiceAccount, Role, and RoleBinding management\n\n## Quick Start\n\n```bash\nnpm install -g @arcaelas/pctl\n```\n\nCreate `pctl.yaml`:\n\n```yaml\nname: my-app\n\nservices:\n  api:\n    image: ./Dockerfile\n    scale:\n      replica: 1\n      cpu: 256m\n      memory: 512Mi\n    ports:\n      - 3000\n    provider:\n      name: docker\n      options: {}\n```\n\nDeploy and destroy:\n\n```bash\npctl deploy\npctl destroy\n```\n\n## Providers\n\n| Provider | Target | Auth | Storage |\n|---|---|---|---|\n| `aws` | EKS (Kubernetes) | IAM / STS / env vars | EBS / EFS |\n| `gcp` | GKE (Kubernetes) | gcloud CLI | PD / Filestore |\n| `docker` | Local or SSH | Docker socket / SSH key | Docker volumes |\n\n## Configuration\n\n```yaml\nname: my-stack\n\nresolver: []                    # Custom resolver modules\nplugin: []                      # Custom plugin modules\ncustom: {}                      # Reusable values store\n\nservices:\n  my-service:\n    image: ./Dockerfile         # or nginx:latest\n    registry: ghcr.io/org/repo  # or { url, username, password }\n    command: \"node server.js\"   # Override CMD\n    env:\n      NODE_ENV: production\n    scale:\n      replica: [2, 10]          # Auto-scaling range\n      cpu: 256m\n      memory: 512Mi\n    ports:\n      - 3000\n      - \"8080:3000\"\n    health:\n      interval: 30\n      command: \"curl -f localhost:3000/health\"\n      retries: 3\n      onfailure: restart        # or stop\n    volumes:\n      - path: /data\n    provider:\n      name: aws\n      options:\n        cluster: my-cluster\n        namespace: production\n```\n\n## Documentation\n\nFull documentation available at [https://arcaelas.github.io/pctl/](https://arcaelas.github.io/pctl/)\n\n- [Installation](https://arcaelas.github.io/pctl/installation/)\n- [Getting Started](https://arcaelas.github.io/pctl/guides/getting-started/)\n- [Configuration](https://arcaelas.github.io/pctl/guides/configuration/)\n- [AWS Provider](https://arcaelas.github.io/pctl/providers/aws/)\n- [GCP Provider](https://arcaelas.github.io/pctl/providers/gcp/)\n- [Docker Provider](https://arcaelas.github.io/pctl/providers/docker/)\n- [API Reference](https://arcaelas.github.io/pctl/api/schema/)\n\n## License\n\nCustom License with Commercial Use Restrictions. See [LICENSE](LICENSE) for details.\n\n**Built by [Arcaelas Insiders](https://github.com/arcaelas)**\n","readmeFilename":"README.md","_rev":"1-23f3d6bf440ce2384e29648f89c6aae2"}