{"id":50403046,"url":"https://github.com/niklas-schmidt-dev/shipable-cli","last_synced_at":"2026-05-31T00:04:36.716Z","repository":{"id":361492681,"uuid":"1253300978","full_name":"niklas-schmidt-dev/shipable-cli","owner":"niklas-schmidt-dev","description":"Open source Shipable CLI","archived":false,"fork":false,"pushed_at":"2026-05-30T21:21:08.000Z","size":67,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-30T23:13:43.988Z","etag":null,"topics":["cli","npm","shipable"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/@shipable/cli","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/niklas-schmidt-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-29T10:26:08.000Z","updated_at":"2026-05-30T21:21:03.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/niklas-schmidt-dev/shipable-cli","commit_stats":null,"previous_names":["niklas-schmidt-dev/shipable-cli"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/niklas-schmidt-dev/shipable-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niklas-schmidt-dev%2Fshipable-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niklas-schmidt-dev%2Fshipable-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niklas-schmidt-dev%2Fshipable-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niklas-schmidt-dev%2Fshipable-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/niklas-schmidt-dev","download_url":"https://codeload.github.com/niklas-schmidt-dev/shipable-cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niklas-schmidt-dev%2Fshipable-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33714036,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-30T02:00:06.278Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","npm","shipable"],"created_at":"2026-05-31T00:04:34.208Z","updated_at":"2026-05-31T00:04:36.711Z","avatar_url":"https://github.com/niklas-schmidt-dev.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Shipable CLI\n\nShipable CLI is the command line interface for Shipable app generation, sync,\npreview, and deployment workflows.\n\n## Install\n\n```bash\nnpm install -g @shipable/cli\nshipable version\n```\n\n## Two ways to use it\n\nShipable CLI is designed to be driven two ways from a single codebase:\n\n- **Headless / scriptable (default).** Every action is a flag-driven subcommand\n  with machine-friendly output (`--json` on `templates`/`status`), so agents and\n  CI can call it without ever hitting an interactive prompt. This is what the\n  npm package ships, and it has zero runtime dependencies.\n- **Interactive TUI (opt-in).** A full-screen terminal UI built on\n  [Bubble Tea](https://github.com/charmbracelet/bubbletea), launched explicitly\n  with `shipable ui`. It reuses the exact same engine as the headless commands\n  (no duplicated API/auth/poll logic) and only renders to a real terminal.\n\n### Interactive UI (`shipable ui`)\n\nThe TUI gives you a status dashboard with one-key actions — deploy preview/\nproduction, sync, generate, follow logs, and create from a template — plus\nbrowser (device-flow) login.\n\nIt can also switch backends live with `e`: it defaults to the **official**\nproduction API (`https://api.shipable.de`) and toggles to a **local** backend\n(`http://localhost:8080`) for development. Each backend keeps its own stored\ntoken (`config.json` vs `config-local.json`), so switching never logs you out\nof the other. Override the URLs with `SHIPABLE_OFFICIAL_API_URL` /\n`SHIPABLE_LOCAL_API_URL`; exporting `SHIPABLE_API_URL=http://localhost:8080`\nstarts the TUI on the local backend.\n\nIt is compiled behind the `tui` build tag so the headless/npm binaries stay\nsmall and dependency-free:\n\n```bash\ngo build -tags tui -o shipable ./cmd/shipable\n./shipable ui\n```\n\n`shipable ui` only starts when stdin, stdout, and stderr are all TTYs, and\nrefuses under `CI`, `TERM=dumb`, or `SHIPABLE_NO_TUI=1`. It renders to stderr,\nso the rest of the CLI keeps stdout reserved for machine output. The default\n(npm-distributed) binary is built **without** the tag and `shipable ui` there\nprints how to get the TUI build.\n\n### Authentication\n\nTwo ways to authenticate, neither of which needs a WorkOS client id:\n\nThe CLI talks to the production API (`https://api.shipable.de`) by default;\noverride with `--api-url`, `SHIPABLE_API_URL`, or the TUI backend switcher.\n\n- **Access token** — set `SHIPABLE_TOKEN` (and `SHIPABLE_API_URL` to target a\n  non-default backend) before launching, run `shipable auth login --token-stdin`,\n  or press `t` in the TUI to paste a token.\n- **Browser (device flow)** — `shipable auth login`, or press `l` in the TUI.\n\nBrowser login uses the WorkOS device-authorization grant, which needs a\n**public** WorkOS client id (no secret). It is resolved in this order:\n\n1. `--client-id`\n2. `SHIPABLE_WORKOS_CLIENT_ID`\n3. `WORKOS_CLIENT_ID`\n4. `apps/api/.env` (`WORKOS_CLIENT_ID`), searched upward from the working dir\n5. the prod Shipable CLI client id baked into the source\n\nThe source default is the Production WorkOS CLI application\n`client_01KSXAMHC5HC8F6J7D1GZMAA07`, so npm, Homebrew, and source builds can\nstart browser login without extra configuration. Override it only for local or\nstaging auth testing.\n\nRelease builds may still override it with `SHIPABLE_WORKOS_CLIENT_ID` and\noptional `SHIPABLE_WORKOS_API_URL` via `-ldflags`, but the normal npm and\nHomebrew builds should rely on the source default. For local development against\nanother WorkOS app, export `SHIPABLE_WORKOS_CLIENT_ID` before launching, e.g.:\n\n```bash\nexport SHIPABLE_WORKOS_CLIENT_ID=client_xxx\ngo run -tags tui ./cmd/shipable ui\n```\n\n## Development\n\n```bash\ngo test ./...\ngo test -tags tui ./...   # also exercises the TUI model\ncd npm\nnpm ci --ignore-scripts\nnpm test\nnpm run build\nnpm run pack:check\n```\n\nThe npm package bundles prebuilt Go binaries for macOS, Linux, and Windows on\nx64 and arm64. It has no npm dependencies, no install lifecycle scripts, and no\nruntime binary downloads.\n\nThe TUI dependencies (Bubble Tea et al.) are only used under the `tui` build\ntag, so the default `go build` and the npm binaries never link them. Because\n`go mod tidy` ignores tagged files unless the tag is visible, always tidy with:\n\n```bash\nGOFLAGS=-tags=tui go mod tidy\n```\n\nA plain `go mod tidy` would prune the TUI requires from `go.mod`.\n\n## License\n\nApache-2.0. See [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fniklas-schmidt-dev%2Fshipable-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fniklas-schmidt-dev%2Fshipable-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fniklas-schmidt-dev%2Fshipable-cli/lists"}