Skip to content

Getting Started

Cryyer sends automated email updates to your users, with per-product voice powered by LLM-drafted content.

Run this inside your project repo:

Terminal window
npx @atriumn/cryyer init

The interactive setup walks you through product name, GitHub repo, voice/tone, LLM provider, subscriber store, and API keys — then creates everything you need:

  • products/*.yaml — product configuration
  • .env — API keys and settings
  • subscribers.json — subscriber list (when using JSON store)
  • .gitignore — ignores .env and data files
  • .github/workflows/ — release pipeline workflows (optional)
Terminal window
npx @atriumn/cryyer init --yes \
--product "My App" \
--repo owner/my-app \
--voice "Friendly and concise" \
--pipeline weekly

Non-interactive mode (--yes or CI=true) skips all prompts. Secrets are read from environment variables (ANTHROPIC_API_KEY, RESEND_API_KEY, etc.) instead of being written to .env. Defaults: anthropic LLM, json subscriber store, resend email, no workflows.

Available flags: --product, --repo, --voice, --llm, --subscriber-store, --email-provider, --from-email, --pipeline (weekly, release, or both).

AI coding agents (Claude Code, Cursor, etc.) can skip init entirely and write the files themselves. All you need is a products/*.yaml file — see Product Configuration for the schema.

Then validate and preview:

Terminal window
npx @atriumn/cryyer check # validate your setup
npx @atriumn/cryyer run --dry-run # preview a draft email

When you’re ready to run for real:

Terminal window
npx @atriumn/cryyer run # full pipeline: gather → draft → send

Or run the two stages separately:

Terminal window
npx @atriumn/cryyer draft # generate drafts → create GitHub issues
npx @atriumn/cryyer send # send emails when a draft issue is closed

For release-triggered emails, use the file-based commands:

Terminal window
npx @atriumn/cryyer draft-file --product my-app --version 1.2.0 # generate a draft file
npx @atriumn/cryyer send-file drafts/v1.2.0.md --product my-app # send from draft file

You can also create products/*.yaml files manually — see Product Configuration for all fields, and Environment Variables for all env vars.

Cryyer supports two automation pipelines:

Release pipeline — sends emails when you publish a release. A draft file is auto-generated on each release PR, you review it, merge to publish, then approve the send in GitHub Actions. Best for release notes.

Weekly pipeline — sends digest emails on a schedule. Drafts are created as GitHub issues for review. Close the issue to approve and send. Best for recurring updates.

Both pipelines gather GitHub activity (merged PRs, releases, notable commits), generate email drafts via your chosen LLM, and send through Resend or Gmail. If your product has multiple audiences, each audience gets its own draft with a tailored voice.

See GitHub Actions for setup details.

If your repo is public, don’t use the default JSON subscriber store — subscribers.json would need to be committed, exposing subscriber emails. Use the GitHub Gist store instead. It keeps the same JSON format in a private Gist:

Terminal window
SUBSCRIBER_STORE=gist
GITHUB_GIST_ID=your_gist_id
GITHUB_TOKEN=ghp_your_pat # classic PAT with gist scope (fine-grained PATs don't work)

See GitHub Gist Store for setup steps.