Signpost

Image generation API.
Templates live in your repo.

OG cards, social posts, email headers, podcast covers, event banners, YouTube thumbnails — one API, eleven templates, $9 a month for 1,500 renders. Commit a JSX or HTML template to your repo, hit a URL, get a PNG. Self-host the whole thing if you want.

GitHub — signpost-render

No credit card. We’ll email you once, when it’s live.

What it’s like today

What we’re building

A hosted image renderer that reads templates from your Git repo, caches aggressively, and charges what the CPU actually costs. One API for OG cards, social posts, podcast covers, email headers, ad banners, event tickets, YouTube thumbnails, and quote cards — and everything you commit next.

How it works

1. Pick a template (or commit your own)

// templates/blog-post.jsx
export default function BlogPostCard({ title, author, date }) {
  return (
    <div style={{ display: "flex", flexDirection: "column", padding: 48 }}>
      <h1 style={{ fontSize: 72 }}>{title}</h1>
      <p style={{ fontSize: 32, color: "#777" }}>by {author} · {date}</p>
    </div>
  );
}

11 templates ship in the gallery: OG cards, blog posts, podcast covers, YouTube thumbnails, event banners, quote cards, email headers and more. Commit your own; Signpost picks them up.

2. Render from any URL

https://og.daystorm.institute/render/podcast-cover?title=Episode+42&host=Jane

First render takes ~500ms. Second render takes 20ms — we cache by (template SHA) × (params).

3. Drop the URL anywhere

<meta property="og:image" content="https://og.daystorm.institute/...">
<img src="https://og.daystorm.institute/render/email-header?...">
// or in your podcast feed, your newsletter, your event invites — same API.

That’s it.

Why this is different

ThemSignpost
Templates live in their dashboardTemplates live in your repo, reviewed in your PRs
You ship → they have a copy of your brand assetsWe only see what you render
Bannerbear $49/mo, Placid $29/mo, HCTI $14/mo entry$9/mo entry, or free self-host
One product per category (OG, PDF, social, email)One API for all of them
Closed hosted serviceYou can take Signpost home — full Docker image, same renderer

Pricing

Subscription-first. Go over your plan? We meter the overage at $0.01 per render — no surprise cliff. Pre-launch prices hold forever for waitlist signups who convert in the first 30 days.

Free

$0

  • 50 renders / month
  • 1 public template repo
  • All 11 built-in templates
  • Community Discord
  • No card required

Pro

$29/mo

  • 10,000 renders / month included
  • Overage at $0.005/render
  • 5 private template repos
  • Priority render queue
  • Custom fonts & brand kits
  • Email support, faster turnaround

Self-host

$0 forever, AGPL-3.0

  • Run on your own infrastructure
  • Full Docker image & manifests
  • Setup help during beta
  • Same engine as the hosted tier
Need to front-load a launch week? Top-up bundles

Prepaid credit packs that stack on top of your monthly allowance. Credits never expire. Available once you’re on a paid plan — not a standalone “pay-as-you-go” path.

  • $10 → 1,100 renders (10% bonus)
  • $25 → 3,000 renders (20% bonus)
  • $50 → 6,500 renders (30% bonus)

FAQ

What kinds of images can Signpost generate?

Out of the box: Open Graph cards, blog post cards, changelog entries, GitHub repo cards, product launch cards, documentation page cards, podcast covers, YouTube thumbnails, event banners, quote cards, email headers. Eleven templates that cover most "I need an image for <X>" requests. Add your own JSX or HTML templates to your repo and Signpost picks them up — the existing 11 are starting points, not the whole product.

Why AGPL for the self-host version?

We want to prevent a large cloud provider from taking the code, repackaging it, and outcompeting the hosted version with zero contribution back. AGPL keeps the door open for commercial contributors to dual-license in the future. Personal and company internal use: totally unrestricted.

How does the Git-native template workflow work?

Point Signpost at a public or private GitHub repo you own. We check it out on change (webhook or poll). Templates are plain JSX or HTML/CSS files. We detect changes via commit SHA and rebuild the render cache accordingly.

Is Satori going to support display: grid?

Not as of April 2026. We work around this for the specific grid patterns people ask about — you can read our template cookbook on day one. If your design needs a full browser engine, we’ll transparently fall back to headless Chrome (and charge 3× per render so the unit economics stay honest).

I already have @vercel/og working. Why move?

You probably shouldn’t, just for OG images. We’re not here to pry people off working setups. We’re here for (a) people who don’t ship on Vercel, (b) people who need more than OG — podcast covers, email headers, event banners, YouTube thumbnails — from one API, (c) teams who want templates reviewed in PRs.

What happens if you shut down?

You have the Docker image, the templates are in your repo. Worst-case: you docker run on a VPS and keep going. That’s the whole point of the architecture.

Are there limits on render performance?

Free tier: one concurrent render per account. Solo: three concurrent. Pro: ten concurrent + priority queue. All tiers: 5-second wall-clock timeout per render.

Will there be a CLI?

Yes. signpost render ./templates/card.jsx --params title="Hello" renders locally. Useful for previewing before you push, and for CI checks that ensure the template didn’t break.

Can I POST raw HTML and get a PNG back?

Coming soon. The named-template API ships at launch; an HTML-to-image POST endpoint is the next thing on the roadmap, undercutting htmlcsstoimage’s $14–$149/mo with the same single subscription.

Join the waitlist

We’ll email once, with the onboarding link. No drip campaigns.

Prefer email? [email protected]. Or star the repo to follow along.