Your agent is thinking.
You're earning.
Claude Code compiles. Cursor plans. Copilot waits on a response. That dead time is real human attention — you are looking at the screen — and right now nobody pays you for it.
Hafta puts one quiet sponsored line in your editor and gives you 55% of what it earns. Paid over UPI, every week.
Read · 0.5s
18 seconds of nothing
Grep · 4.0s
18 seconds, now worth something
One line. No popups, nothing that moves your code around. The ring is the actual billing rule: ten continuous seconds on screen, measured by our clock, or the advertiser is not charged and you are not paid.
One command. Nothing patched.
Works with Claude Code through its own supported statusLine and spinnerVerbs settings. We write two config keys and nothing else, which is why their updates never break us.
curl -L https://hafta.axonatetech.com/vsix -o hafta.vsix && code --install-extension hafta.vsix --force
curl -fsSL https://hafta.axonatetech.com/sh | sh
irm https://hafta.axonatetech.com/ps1 | iex
The extension covers Windows, macOS and Linux in one command, which is why it leads. The shell installers are for people who do not run VS Code — each covers only its own platform.
No Node needed on Unix
There is a pure sh + curl client for servers and slim containers. Requiring a Node install just to print one line rules out most of them.
Nothing is patched
Two supported Claude Code config keys, and nothing else. Their updates never break us because we never touched their code.
Installing twice earns the same
Every client shares one billing lease. A machine bills one impression at a time — two windows are still one pair of eyes.
The server owns the clock.
Your editor asks for a slot, displays it, and reports what happened. What that was worth is decided here — never by the client.
We never read your code
Impression IDs, timings, and a coarse device ID. Not file names, not prompts, not one line of source. The client has no code that could send them.
We never interrupt you
One line, in space that already exists. No modals, no notifications, no layout shift. One toggle stops every network call.
We never sit on your money
Weekly UPI transfer once you cross ₹50. UPI makes small payouts economical — the reason others batch monthly and we do not.
Each surface runs its own auction.
They clear at different prices because they are different inventory. Pooling them would make the premium placement subsidise the ambient one and price both wrong.
In the status bar
Read directly, in the window being worked in. Links clickable everywhere.
Above the shell prompt
High volume at a lower clearing price. Clickable where the terminal supports it.
$
Every price on this network is public.
An advertiser can see exactly what it costs to lead. A developer can check that the CPM we quote is the CPM the ledger uses. Both are uncomfortable, and both are the point.
| # | Brand | Campaign | Surface | CPM |
|---|---|---|---|---|
| loading the board | ||||
Live from the auction. Floor is ₹25 CPM — below that a developer's whole day is worth a few rupees, and inventory nobody runs is worth nothing to any advertiser.
Real numbers, before you install anything.
No range invented for a landing page. Everything below is computed from campaigns serving right now, and moves when they do.
Campaigns on the network clear at ₹00–00 per thousand impressions, and 55% of that is yours. A slot rotates every 12 seconds.
| Usage | At today's prices |
|---|---|
| Casual — 2 hours a day | ₹000 |
| Full-time, agent-heavy — 8 hours a day | ₹000 |
Computed live, not typed into this page. If prices fall, this table falls with them.
Now the part those numbers do not show. They assume a slot is filled every time. Today it often will not be — the network is new, and an empty slot pays ₹0 however high the CPM is. Your real earnings are the table above multiplied by fill rate, and fill rate is the one number nobody can promise you.
Where it runs today.
What is shipped and tested, not a roadmap dressed up as a feature list. A dash means that combination does not exist.
| Surface | Claude Code | VS Code | Cursor | Other CLI |
|---|---|---|---|---|
| Status bar | yes | yes | yes | — |
| Thinking verb | yes | — | — | — |
| Shell prompt | yes | yes | yes | yes |
| Clickable links | most terminals | yes | yes | most terminals |
The thinking verb uses Claude Code's own spinnerVerbs setting. Link clicking depends on OSC 8 support, which varies by terminal.
Bots will try. Here is exactly how we catch them.
The server owns the clock
It issues the settle token and stamps the time. Whatever a client claims is an upper bound to be checked against elapsed real time.
Real work is messy
Genuine installs produce dismissals, sub-threshold views, long idle gaps. A stream of flawless views around the clock is the clearest bot signal there is.
A human reviews flags
No auto-bans. A false positive costs an honest developer real money, so a person looks before anything is suspended.
Indian developers, at the moment they are waiting.
No tracking pixels, no retargeting profiles, no third-party cookies. An impression, a timer, and a click.
You pay for attention
An impression bills only if it stayed on screen past the threshold — measured against our clock, not a number the client sends.
Every rupee is traceable
Append-only ledger. Reversals are compensating entries, never edits. Reconcile any charge to a single impression ID.
Bids start at ₹25 CPM
Every live bid is on this page. You are never guessing what it costs to compete.
A note on the split.
For most of the internet's history the deal has been the same: you supply the attention, a platform keeps the money. Hafta is a small attempt to change the arithmetic rather than complain about it. You keep 55%.
We do not set the price — advertisers bid, and every bid is on this page. We do not decide what an impression is worth either: it is worth ten continuous seconds on your screen, or it is worth nothing.
Built in India, paid in rupees, over UPI, weekly. UPI is what makes small transfers economical, and that is the whole reason this can work here at all.