pushci 1.7.4 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,16 +1,27 @@
1
1
  # PushCI
2
2
 
3
+ [![npm version](https://img.shields.io/npm/v/pushci.svg)](https://www.npmjs.com/package/pushci)
4
+ [![License: BUSL-1.1](https://img.shields.io/badge/License-BUSL--1.1-blue.svg)](LICENSE)
5
+ [![CI](https://github.com/finsavvyai/pushci/actions/workflows/ci.yml/badge.svg)](https://github.com/finsavvyai/pushci/actions/workflows/ci.yml)
6
+ [![MCP](https://img.shields.io/badge/MCP-compatible-purple.svg)](https://pushci.dev/ai)
7
+
3
8
  **Zero-config AI CI/CD. Runs on your machine. Free forever.**
4
9
 
10
+ > 35 languages. 39 frameworks. 22 deploy targets. Zero YAML.
11
+ > One command to set up CI. $0 to run it.
12
+
5
13
  ```bash
6
14
  npm install -g pushci # one-time install
7
15
  pushci init # AI detects your stack in 30 seconds
8
16
  git push # tests run automatically
9
17
  ```
10
18
 
19
+ <!-- TODO: Add 30-second demo GIF here -->
20
+ <!-- ![PushCI Demo](assets/demo.gif) -->
21
+
11
22
  ## Why PushCI?
12
23
 
13
- In 2026, GitHub started charging $0.002/min for self-hosted runners that were previously free. PushCI never charges for local compute ever.
24
+ GitHub Actions charges $0.008/min for hosted runners and $0.002/min for self-hosted runners (as of March 2026). PushCI runs on your machine for $0always.
14
25
 
15
26
  | | PushCI | GitHub Actions | GitLab CI | Jenkins |
16
27
  |--|---------|---------------|-----------|---------|
@@ -26,7 +37,6 @@ In 2026, GitHub started charging $0.002/min for self-hosted runners that were pr
26
37
  # Install (pick one)
27
38
  npm install -g pushci # npm (recommended)
28
39
  brew install finsavvyai/tap/pushci # Homebrew
29
- go install github.com/finsavvyai/pushci/cmd/pushci@latest # Go
30
40
  curl -fsSL https://pushci.dev/install.sh | sh # Script
31
41
 
32
42
  # Auto-detect your stack
@@ -63,16 +73,17 @@ PushCI includes an MCP server for AI coding agents like **Claude Code**, **Curso
63
73
 
64
74
  ## Supported
65
75
 
66
- **33 Languages**: Go, Node/TS, Python, Rust, Java, C#,
76
+ **35 Languages**: Go, Node/TS, Python, Rust, Java, C#,
67
77
  Ruby, PHP, Swift, Dart, Elixir, Zig, Scala, Haskell,
68
- Kotlin, Lua, Perl, R, Julia, OCaml, Nim, Crystal +more
78
+ Kotlin, Lua, Perl, R, Julia, OCaml, Nim, Crystal, Bicep +more
69
79
 
70
- **40+ Frameworks**: Next.js, Nuxt, SvelteKit, Django, FastAPI,
80
+ **39 Frameworks**: Next.js, Nuxt, SvelteKit, Django, FastAPI,
71
81
  Flask, Spring Boot, Rails, Laravel, Phoenix, Flutter +more
72
82
 
73
- **23 Deploy Targets**: Cloudflare, AWS (ECS/Lambda/S3),
74
- GCP (Cloud Run/App Engine), Azure, Vercel, Railway,
75
- Fly.io, Netlify, Docker, Kubernetes, SSH
83
+ **22 Deploy Targets**: Cloudflare (Pages/Workers), AWS (ECS/Lambda/S3),
84
+ GCP (Cloud Run/App Engine), Azure (App Service/Functions/Bicep),
85
+ Vercel, Railway, Fly, Render, Netlify, Docker, K8s, SSH,
86
+ Terraform, CloudFormation, Pulumi, Ansible
76
87
 
77
88
  ## Messaging Channels
78
89
 
@@ -127,12 +138,104 @@ pushci troubleshoot Diagnose issues with actionable fixes
127
138
  pushci trace View Perfetto performance traces
128
139
  pushci release Build & publish release locally ($0)
129
140
  pushci promote Register with AI registries
141
+ pushci voice TTS narration for runs (curb / office / deadpan-tech)
130
142
  pushci uninstall Remove hooks, config, and .pushci
131
143
  pushci version Print version
132
144
  ```
133
145
 
134
146
  See [docs/CLI.md](docs/CLI.md) for the full CLI reference with flags, examples, and plan requirements.
135
147
 
148
+ ## Voice
149
+
150
+ PushCI narrates your pipeline. Pick a persona, run your pipeline, hear it. Phrases are pre-canned by default; with an AI key you get fresh in-character lines per run.
151
+
152
+ ```bash
153
+ pushci voice list # show built-in personas
154
+ pushci voice say "deploying" --persona curb-style
155
+ pushci voice test --persona office-style # demo all 6 lifecycle events
156
+ pushci voice joke --diff main # AI riffs on the diff vs main
157
+ pushci run --voice # auto-narrate pipeline events
158
+ ```
159
+
160
+ Built-in personas:
161
+
162
+ | Persona | Style |
163
+ |---|---|
164
+ | `curb-style` | Petty frustration, awkward incredulity |
165
+ | `office-style` | Oblivious enthusiasm, motivational confusion |
166
+ | `deadpan-tech` | Sysadmin superiority, dark contempt |
167
+ | `deadpan-narrator` | Neutral, no character |
168
+
169
+ Defaults are zero-config: macOS `say` backend, no API keys, no network. Add `--ai` (or `PUSHCI_VOICE_AI=1` for `pushci run`) to switch on AI commentary via any of the 7 supported providers (`ANTHROPIC_API_KEY` / `GROQ_API_KEY` / `DEEPSEEK_API_KEY` / `OPENAI_API_KEY` / `GEMINI_API_KEY` / local llamafile / PushCI proxy).
170
+
171
+ Safety: every utterance passes through a redactor (JWTs, AWS ARNs, account IDs, API keys, IPs, internal hostnames, emails are masked) and AI output runs through a content filter (rejects profanity + prompt-injection echo). Mute everything with `PUSHCI_VOICE_OFF=1`.
172
+
173
+ Bring your own personas via `~/.pushci/voices.yml` — user entries appear in `pushci voice list` alongside the built-ins and override on name collision:
174
+
175
+ ```yaml
176
+ personas:
177
+ - name: pirate-style
178
+ voice: Daniel # macOS voice; run `say -v ?` to enumerate
179
+ description: Pirate-themed deploy commentary
180
+ phrases:
181
+ start: ["Aye, hoist the colors. Deploying."]
182
+ pass: ["Ye scurvy tests passed."]
183
+ fail: ["Avast, the build hath sunk."]
184
+ ```
185
+
186
+ ## Secrets
187
+
188
+ PushCI resolves secret references inline in `pushci.yml` env blocks.
189
+ Three schemes are supported today; PushCI never writes a plaintext
190
+ secret to disk it didn't already encrypt.
191
+
192
+ | Scheme | Backed by | Best for |
193
+ |---|---|---|
194
+ | `keychain://service[#account]` | macOS Keychain / Windows Credential Manager / Linux Secret Service, with AES-encrypted fallback at `~/.pushci/keychain.enc` for headless CI | Local dev, individual machines |
195
+ | `vault://path#field` | HashiCorp Vault AppRole (`VAULT_ADDR` + `VAULT_ROLE_ID` + `VAULT_SECRET_ID`) | Teams, audited environments |
196
+ | `pushci secrets set KEY VAL` | Per-project AES file at `.pushci/secrets.enc`, machine-bound | Quick one-offs, throwaway scripts |
197
+
198
+ ```yaml
199
+ # pushci.yml
200
+ stages:
201
+ - name: publish
202
+ env:
203
+ NPM_TOKEN: keychain://npm-publish-token
204
+ DEPLOY_KEY: keychain://deploy-bot#prod
205
+ DB_PASSWORD: vault://secret/data/prod/db#password
206
+ checks:
207
+ - name: publish
208
+ run: npm publish
209
+ ```
210
+
211
+ **Managing keychain entries from the CLI:**
212
+
213
+ ```bash
214
+ pushci secrets keychain set npm-publish-token npm_xxxxxxxxxxxx
215
+ pushci secrets keychain set deploy-bot#prod s3cr3t
216
+ pushci secrets keychain get npm-publish-token
217
+ pushci secrets keychain list # fallback-file entries only
218
+ pushci secrets keychain rm npm-publish-token
219
+ ```
220
+
221
+ On macOS the storage layout matches the `security` CLI verbatim, so the
222
+ common `.zshrc` helper functions work side-by-side:
223
+
224
+ ```bash
225
+ secret() { security find-generic-password -a "$USER" -s "$1" -w 2>/dev/null; }
226
+ secret-set() { security add-generic-password -a "$USER" -s "$1" -w "$2" -U; }
227
+ ```
228
+
229
+ Entries written by `secret-set` are readable by `pushci secrets keychain
230
+ get`, and vice versa — no `go-keyring-base64:` prefix gymnastics.
231
+
232
+ **Headless Linux CI:** when D-Bus and Secret Service aren't running,
233
+ PushCI falls back transparently to an AES-encrypted file at
234
+ `~/.pushci/keychain.enc` with a machine-bound key. A one-time stderr
235
+ warning fires the first time a fallback read or write happens, so the
236
+ behavior is never silent. Override account default with the `#account`
237
+ suffix; the current OS user is used when omitted.
238
+
136
239
  ## Configuration
137
240
 
138
241
  `pushci.yml` is optional — `pushci init` generates one that works, and
@@ -347,12 +450,12 @@ The hook is designed to never block your workflow:
347
450
 
348
451
  ## Pricing
349
452
 
350
- | Free | Pro $9/mo | Team $29/mo |
351
- |------|-----------|-------------|
352
- | 1 repo | Unlimited | Unlimited |
353
- | Self-hosted | Dashboard | Shared runners |
354
- | Unlimited runs | Slack/Discord | SSO + audit |
355
- | AI detection | Analytics | SLA guarantee |
453
+ | Free | Pro $9/mo | Team $29/seat/mo | Enterprise |
454
+ |------|-----------|-------------------|------------|
455
+ | Unlimited local runs | Unlimited repos | Everything in Pro | Everything in Team |
456
+ | AI stack detection | AI diagnosis (100/mo) | 2000 cloud minutes | Unlimited cloud minutes |
457
+ | 2 deploy targets | 22 deploy targets | SSO / SAML | SCIM + 7-year audit |
458
+ | Community support | Dashboard + analytics | Audit logs + governance | Dedicated tenant option |
356
459
 
357
460
  ## Links
358
461
 
@@ -361,6 +464,22 @@ The hook is designed to never block your workflow:
361
464
  - **Cost Calculator**: https://pushci.dev/tools/cost-calculator
362
465
  - **Compare**: [vs GitHub Actions](https://pushci.dev/vs/github-actions) | [vs GitLab CI](https://pushci.dev/vs/gitlab-ci) | [vs CircleCI](https://pushci.dev/vs/circleci) | [vs Jenkins](https://pushci.dev/vs/jenkins)
363
466
 
467
+ ## Contributing
468
+
469
+ We welcome contributions. See [CONTRIBUTING.md](CONTRIBUTING.md) for setup instructions and contribution guidelines.
470
+
471
+ **Good first issues:**
472
+ - Add a framework detector (`internal/detect/`)
473
+ - Add a deploy target (`internal/deploy/`)
474
+ - Improve CLI error messages
475
+ - Add tests
476
+
477
+ Please read our [Code of Conduct](CODE_OF_CONDUCT.md) before contributing.
478
+
479
+ ## Security
480
+
481
+ Found a vulnerability? See [SECURITY.md](SECURITY.md) for our disclosure policy.
482
+
364
483
  ## License
365
484
 
366
485
  [BSL 1.1](LICENSE) (Business Source License). Free to use for any purpose except
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pushci",
3
- "version": "1.7.4",
4
- "description": "AI-native CI/CD that runs on your machine. Zero config, zero cost. Works inside AI agent sandboxes (Claude, Cursor, Windsurf). 33 languages, 40+ frameworks, 20 deploy targets, 25 installable skills, Tailscale mesh, blast radius analysis.",
3
+ "version": "1.8.0",
4
+ "description": "AI-native CI/CD that runs on your machine. Zero config, zero cost. Works inside AI agent sandboxes (Claude, Cursor, Windsurf). 33 languages, 40+ frameworks, 22 deploy targets, 25 installable skills, Tailscale mesh, blast radius analysis.",
5
5
  "bin": {
6
6
  "pushci": "bin/pushci.js"
7
7
  },