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 +133 -14
- package/bin/pushci-darwin-amd64 +0 -0
- package/bin/pushci-darwin-arm64 +0 -0
- package/bin/pushci-linux-amd64 +0 -0
- package/bin/pushci-linux-arm64 +0 -0
- package/bin/pushci-windows-amd64.exe +0 -0
- package/bin/pushci-windows-arm64.exe +0 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,16 +1,27 @@
|
|
|
1
1
|
# PushCI
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/pushci)
|
|
4
|
+
[](LICENSE)
|
|
5
|
+
[](https://github.com/finsavvyai/pushci/actions/workflows/ci.yml)
|
|
6
|
+
[](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
|
+
<!--  -->
|
|
21
|
+
|
|
11
22
|
## Why PushCI?
|
|
12
23
|
|
|
13
|
-
|
|
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 $0 — always.
|
|
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
|
-
**
|
|
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
|
-
**
|
|
80
|
+
**39 Frameworks**: Next.js, Nuxt, SvelteKit, Django, FastAPI,
|
|
71
81
|
Flask, Spring Boot, Rails, Laravel, Phoenix, Flutter +more
|
|
72
82
|
|
|
73
|
-
**
|
|
74
|
-
GCP (Cloud Run/App Engine), Azure
|
|
75
|
-
Fly
|
|
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
|
-
|
|
|
353
|
-
|
|
|
354
|
-
|
|
|
355
|
-
|
|
|
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
|
package/bin/pushci-darwin-amd64
CHANGED
|
Binary file
|
package/bin/pushci-darwin-arm64
CHANGED
|
Binary file
|
package/bin/pushci-linux-amd64
CHANGED
|
Binary file
|
package/bin/pushci-linux-arm64
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pushci",
|
|
3
|
-
"version": "1.
|
|
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,
|
|
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
|
},
|