Ship the code.Then ship the story.

Pulsor connects to your GitHub repositories and reads what you already do commits, releases, shifting tech stacks then drafts developer-focused threads, code cards, and diagrams, ready to post.

read-only by default · no code leaves your review

input · commitmain@a91f2c

feat: cache AST between runs (40% faster cold start)

PulsorThread
output · Thread

X / TwitterLinkedInDrafting…
Pulsor — run dataPL-01Rev ASheet 01 of 04
No.PropertyValueRemark
01Repositories per workspaceUnlimitedPublic and private
02Push to first draft< 60 sMedian, after a merge
03Output formats6Threads, cards, notes, digests, visuals, cross-posts
04Copy written by hand0You review Pulsor drafts
02 · How it works

From push to post in three moves

01

Connect

Authorize GitHub and pick the repositories Pulsor may watch. Read-only by default nothing else is touched.

02

Scan

On every merge, release, or stack change, Pulsor reads the diff and its context not just the commit message.

03

Ship

Get a drafted thread, snippet card, or changelog. Edit inline, then post or schedule to X and LinkedIn.

03 · What it ships

Six formats from one source of truth

Text posts & threads

Narrative threads that explain what changed and why it matters, in a builder's voice.

Code snippet cards

Syntax-highlighted cards pulled from the actual diff the line that mattered, framed.

Changelog & release notes

Human-readable release notes generated from tagged commits and pull-request titles.

Visuals & diagrams

Architecture and before/after diagrams drawn from your file tree and dependencies.

Weekly digest

A Friday summary of the week's progress across every watched repo, ready to send.

LinkedIn / X cross-post

One draft, reformatted for each network's length and tone, posted on your schedule.

04 · Sample output

What Pulsor drafts from a real commit

Three commits, three formats written in Pulsor's voice from real commit patterns, so you can judge the quality before connecting a repo.

input · commitmain@a91f2c

fix: cache AST between runs (40% faster cold start)

PulsorThread
output · Thread

1/Spent the morning chasing a 40% cold-start regression. Found it: AST wasn't cached between runs, so every request re-parsed the same files from scratch.

2/Fix was smaller than expected — hash the file content, cache the parsed tree, invalidate on hash mismatch. ~30 lines.

3/Before: 340ms cold start. After: 205ms. The parse step was quietly eating more than a third of every request.

4/Lesson: “it's just parsing, it's fast” is the kind of assumption that survives until you actually profile it. Always profile it.

X / TwitterReady to post
input · commitmain@7c1a9f

fix: race condition in webhook dedup

PulsorSnippet
output · Snippet
const seen = new Set();
const seen = await redis.setnx(eventId, 1, { EX: 60 });

One in-memory Set per process meant duplicate webhooks slipped through under load-balanced replicas. Moved dedup to Redis with a 60s TTL — now it's actually distributed, not per-instance.

X / TwitterReady to post
input · commitmain@v2.4.0

release: v2.4.0

PulsorChangelog
output · Changelog
  • Faster cold starts — AST caching between runs cuts cold-start latency ~40%
  • Fixed — duplicate webhook delivery under multi-replica load
  • New — /health endpoint now reports queue depth, not just liveness
LinkedIn · DigestReady to post
05 · Integrations

Hooks into the workflow you already run

GitHub first, read-only, scoped to the repositories you name. Publishing and scheduling connect out to the networks you post on.

GitHubGitLabX / TwitterLinkedInSlackWebhooksMore soon
06 · Questions

The parts engineers ask about

Does Pulsor need write access?

No. It reads your repositories read-only by default. Publishing uses separate, revocable tokens for each network you connect.

Will it post without me?

Never automatically. Every draft waits for your review you post or schedule it when it reads right.

What about private repos?

Supported. Nothing is stored beyond what's needed to draft, and your code never leaves the review step.

Which languages does it read?

Any language in your diff. Pulsor reads the change and its context, not a fixed set of parsers.


Point Pulsor at a repo

Join the waitlist and get early access, plus a sample thread generated from a public repo of your choice.