@emredogan/cli
v0.1.1
Published
Tiny terminal companion for emredogan.com — browse the portfolio, ask Lumina questions from the shell, list projects, open a /lab experiment.
Maintainers
Readme
@emredogan/cli
A tiny terminal companion for emredogan.com. Browse the portfolio, ask Lumina questions from the shell, list projects, open a
/labexperiment.
npx emredogan ask "How do you handle reduced motion?"Four commands, zero dependencies, POSIX-only. The whole CLI ships as one tiny dist/cli.js with a shebang. Native Node fetch, native child_process — no commander, no axios, no chalk.
Install
Run on demand with npx:
npx emredogan <command>Or install globally:
npm install -g @emredogan/cli
emredogan <command>Requires Node.js 20+. macOS and Linux only; Windows support deferred to v0.2.
Commands
Core
emredogan browse
Opens https://emredogan.com in the platform default browser via open (macOS) or xdg-open (Linux).
emredogan browseemredogan ask "<question>"
Streams a reply from Lumina to stdout. Same model + system prompt as the chat widget on the live site (Claude Haiku 4.5). Per-IP rate limited.
emredogan ask "What does the CWH cron actually do at 06:00 UTC?"
emredogan ask "How is /telemetry cached?"emredogan project list
Prints a tight list of the live projects: title, role, blurb, GitHub and live URLs. Pulled from the public /api/projects JSON.
emredogan project listemredogan demo <slug>
Opens /lab/<slug> in the default browser. Useful when chasing a link from a tweet or a notes page.
emredogan demo iam-translator
emredogan demo prompt-rescuer
emredogan demo commit-narratorKnown slugs are the active /lab experiments. Unknown slugs still open the URL — the lab index page handles 404s for retired experiments.
Read
emredogan changelog
Fetches the last 5 commits from the public engineering log and prints each with its WHY paragraph (wrapped at 76 columns, 4-space indent). Same KV-cached source as the /changelog web page.
emredogan changelogemredogan telemetry
Prints a curated 6-metric snapshot of the platform as a 3-column ASCII table — Lumina p95 latency, auto-tweet successes, IAM translator runs, weekly npm downloads, notes audio plays.
emredogan telemetryemredogan hire
Prints Emre's contact card as a bordered Unicode box: email, LinkedIn, site, GitHub, current operating tempo. No network call — renders identically offline.
emredogan hireBuild
emredogan lab <experiment> "<input>"
POSTs to a /lab experiment endpoint and streams the reply to stdout. Aliases let you skip the URL:
| Alias | Experiment | Input shape |
|---|---|---|
| iam or iam-translator | IAM Translator | IAM policy JSON |
| prompt or prompt-rescuer | Prompt Rescuer | vague developer ask |
| commit or commit-narrator | Commit Narrator | public github.com repo URL |
emredogan lab iam '{"Effect":"Allow","Action":"*","Resource":"*"}'
emredogan lab prompt "build a chat app with auth and payments"
emredogan lab commit "github.com/emredogan-cloud/my-portfolio"The backend's per-IP rate limit and per-day cost cap apply transparently; the CLI maps each to a deterministic exit code.
Global flags
| Flag | What it does |
|---|---|
| --help, -h | Print help text and exit. Also runs when no command is given. |
| --version, -V | Print the installed version and exit. |
Environment
| Variable | Default | Purpose |
|---|---|---|
| EMREDOGAN_API_URL | https://emredogan.com | Override the API base. Useful for staging deployments or local dev (http://localhost:3000). |
Engineering posture
- Zero runtime dependencies. Hand-rolled argv parsing, Node 18+ native
fetch, nativechild_process.spawn. The tarball is well under 100 KB. - Streaming chat.
emredogan askreads the response body chunk by chunk so the terminal renders the reply as it arrives. - Provenance. Published with sigstore provenance — every tarball is linked via OIDC attestation to the exact GitHub workflow run that built it.
- POSIX-only for now. macOS and Linux. The
package.jsonosfield is set sonpm installon Windows surfaces a clear platform mismatch instead of failing inside the CLI.
License
MIT © Emre Doğan
