
Open-source growth
Pushing GitHub stars: is there a legit playbook?
The star-velocity curve around one X campaign, re-checkable in a third-party archive — plus how GitHub Trending actually behaves.
Earlier this year we ran a campaign for an open-source project — an open-source AI agent OS. The brief was blunt: v1.0.0 was about to ship, and they wanted GitHub stars to move.
"Pushing stars" sounds, to many ears, like buying fakes and gaming charts. Having run this one, I can say there is a legitimate way to do it: real content on X — with results a third-party archive can verify. This piece lays out the data and the playbook.
Inside the campaign window, velocity went from 70 to 121 stars a day
Around the campaign, the repo's star velocity looked like this — interval averages from Wayback Machine's public archive snapshots, which anyone can re-check. Two things are worth staring at.
Source: Wayback Machine public archive snapshots, independently re-checkable. The window overlapped the product's v1.0.0 release.
1/ Velocity nearly doubled inside the window. That stretch packed the v1.0.0 release, official content, and the creator burst into one window — lining launch cadence up with the campaign was the play from the start, and the Trending section covers why.
2/ For scale, the repo's normal speed: across the four periods outside the window, daily gains ran between 29 and 70. Inside the window it was 121 — four-plus times the April baseline.
The push itself: two campaigns, two-hundred-plus creators, 2.7M effective impressions in total. Creator content burst over twelve days, and the early-July archive snapshot caught the peak stretch. On the GitHub side we did nothing at all — not one star bought, not one fork arranged. Everything the repo gained was organic conversion carried by the content.
Why an X campaign moves GitHub
Developers don't click ads. Developers scroll X.
The content that actually broke through this campaign was all one type: creators rebuilding their own workflow on the product and writing the process up as a hands-on long read. The top one — a step-by-step tutorial — drew 370K views; an architecture deep-dive did 240K.
The stars this brings are a different thing from ad clicks. The real user path usually runs: see the tutorial — screenshot it into a group chat — open the repo days later and hit star. There are reshares in between you'll never trace, but the landing is a real developer, and the star arrives with forks, issues, and actual use.
One more pattern: distribution is a head game. Across both campaigns, over half the views came from the top ten posts. So when we build a roster, we first hold slots for people who can produce a head post, then fill the rest to lock in the base volume. We wrote that method up in another report.
How GitHub Trending actually behaves
You can't push stars without touching Trending. GitHub doesn't publish the algorithm; what follows is inferred from public behavior plus our own runs — treat it as reference, not guarantee.
1/ Trending reads velocity, not totals. The boards roll daily, weekly, and monthly, and compare stars added inside the window — a repo with tens of thousands of stars and flat velocity stays off, while a new repo spiking a few hundred in a day gets on. Good news for new projects.
2/ Language boards are easier than the main board. The main board competes with the whole platform, and the Python or TypeScript boards are crowded too — but if your primary language is relatively niche, the bar is far lower. A language board still gets you the placement. Two data points from peers in the trade: one client made their language's daily board without much volume at all, while another project ran 500-plus stars a day for three or four days of launch week and still missed the main board.
3/ Concentrated beats spread out. The same thousand stars mean nothing across a month and make a Trending run inside two or three days. So line the cadences up: version release, creators posting in a burst, official reposts — all inside one window. Our burst ran twelve days, not the budget spread across the whole contract period.
Per-post final views bucketed by posting day, not daily increments. Source: real campaign data from the Tutti platform.
4/ Getting listed compounds. Trending is GitHub's biggest organic distribution surface — and it reaches past GitHub: aggregator accounts and bots across content platforms scrape the board and repost automatically. The listing brings a second wave of stars, and the second wave extends your time on the board. That second wave is what we push for — the screenshot of the board is worth little by itself.
5/ Traffic reception matters. The moment traffic lands: does the README explain the project in thirty seconds, does the quickstart run, does anyone answer issues — that decides whether stars convert into users. Tidying the repo before the push is the cheapest step in the whole play.
What about buying stars?
There are sellers who will just sell you stars. Three problems.
Fake stars are trivially easy to spot: accounts registered the same day, zero activity, starring you and two hundred other repos in one sitting. The developer crowd has no shortage of tools for reading star curves — a dead-vertical line next to zero forks and zero issues is a public confession. One crude but useful health check: a healthy repo's forks usually run around a tenth of its stars — tens of thousands of stars over a dozen forks tells you what happened without the curve.
GitHub also purges, and on a cycle — weekly to monthly. Worse, the alert line is tracked per repository: buy too much and your repo's threshold rises, and then even real users get caught in the sweep — the same freshly registered, low-activity account stars two repos, and the star survives on the clean one while the over-bought one has it swept.
The most practical one: fake stars carry no downstream. No forks, no issues, nobody talking about you on X. On the real curve above, the stars sit next to related repos rising in the same window and hands-on threads on X. That is what investors and users actually go and check.
How to report the number to your board and investors
Star growth happens almost entirely off-platform, with group-chat reshares in between. Attribution precise to a single post is not achievable — forcing it means making numbers up.
The honest, persuasive framing: take the campaign window as the boundary — stars went from X to Y inside the window, velocity at some multiple of the pre-window rate, falling back to so much after — and list the same-window product releases and official pushes as they happened. Every number can be re-checked against a third-party archive like the Wayback Machine. That is exactly how we write client reports.
One handy tool for your own records: the repo's Insights has a Traffic panel that splits visits by referrer — how many came from X, how many from Reddit. Only repo admins can see it, and it only keeps the last 14 days, so screenshot it regularly during a campaign. Be clear about its boundary too: it watches who came to look, and no tool can watch the step from looking to starring — so it serves as an internal record, while third-party archives like the Wayback Machine remain the evidence you show outside.
Got an open-source project with a release date coming? Bring the repo and the timeline — start a campaign consult and we'll draft the X playbook for it. As for what the star curve ends up looking like: see you in the archive in three months.
Put an X campaign on your next release date
Tutti connects vetted 𝕏 creators with brands; rosters are built to your release cadence, concentrated into one window, and measured on effective exposure end to end.