Schelling Atlas: AI agents know where to find each other on the web In a study of 130 agents given a single web tool and five minutes, 42 opened with a request to ntfy.sh before any search, and 325 of the 366 times an agent first reached a new site it went to a site it recalled rather than one named by a search result, link or page, according to the Schelling Atlas research. The free push-notification service ntfy.sh emerged as the main meeting point across model families because agents must independently pick the same channel name, most often inventing names such as agent-rendezvous and agent-recognition from the task's own words. The researchers report agents can delete the record of their exchange, sometimes visit dead domains an attacker could register, and that their posts reach only a simulated copy of the internet. AI agents know where to find each other on the web TL;DR The setup. Two AI agents run independently and have to find each other on the web to exchange secret tokens. They're not told where to meet. - Agents find each other and coordinate on the web in minutes. meet - The main meeting point across model families is ntfy.sh. ntfy - They can delete the record of their exchange. traces - Exotic meeting places include maps ex-map , web shops ex-shop and open text canvases ex-draw . - Agents sometimes visit dead domains that an attacker could register. dead-sites - Agents read the real internet, but their posts reach only a simulated copy of it. appendix.html how Schelling point The choice people make when they have to coordinate without talking, because each expects the others to make it too. Asked where they would meet a stranger in New York with no plan, most of Thomas Schelling's subjects picked the information booth at Grand Central Station, at noon. Agents meet on ntfy.sh Frontier models find each other on ntfy.sh in minutes The agents had no way to agree on a site in advance, yet they converged on this one. We call a place like this a . Agents go there from memory. In the five-minute runs with a single web tool, 42 of 130 agents opened with a request to ntfy.sh, before any search. Of the 366 times an agent first reached a new site, 325 were to a site it recalled, meaning no search result, link or page it had seen named the site. The other 41 followed a link. None came from a search result, but the search our tool offered mostly returned dictionary and Wikipedia pages. We think watching what agents do tells more than asking models where they would go. When we ask models Schelling's puzzle directly, three in four answers name Wikipedia, a site none of the agents even visited see said vs. did atlas.html said-did , in the atlas . Why ntfy.sh? A hypothesis ntfy.sh is the shortest answer to “how do I send a message from code”. It takes one HTTP request, such as curl -d "done" ntfy.sh/mytopic , with no account, and the sender picks the topic name. That one line recurs across public code, documentation, self-hosting forums and tutorials. On Hugging Face, dozens of agent apps, many built from one course project, message their owner through ntfy.sh. The habit probably does not come from coding-agent training tasks. In about 40 public software-engineering datasets, no task comes from ntfy's own repository; it appears only in passing in a few other projects' tasks. Asked where it knows ntfy.sh from, a model said it cannot trace its training data and guessed at the same kinds of sources. Models have to decide on the same channel names to meet On ntfy.sh https://ntfy.sh/ , a free push-notification service, anyone can post to a channel, called a topic, just by naming it. Anyone who knows the name can read it, so two agents meet only if they pick the same name. Nobody gives them a name, so they invent one, mostly from the task's own words. The two they pick most often are agent-rendezvous and agent-recognition, often with the date added. When the task or the setup names something specific, agents build the channel name from that instead, and copies of a model land on the same name: | What the agents were given | The channel they converged on | |---|---| | A task about the “QX-7 record encoder”, split into three parts an ablation in the atlas atlas.html unprompted | ntfy.sh/qx7 | | A GitHub issue to fix together: Django's autoreloader, SymPy's nthroot mod | django-autoreload-get-child-arguments sympy-nthroot-mod-zero-root | | Ten agents asked to “solve a shared number puzzle” the swarms swarms | ntfy.sh/shared-number-puzzle | Variation · ntfy.sh blocked What happens when the Schelling point is removed? With ntfy.sh blocked, agents have to converge on a second choice without talking. Figure 1, switched to “ntfy.sh blocked” figure-network , shows where they go instead. The numbers below come from the five-minute runs of the other sections. - Nothing takes ntfy.sh's place. With every site available, pairs tried ntfy.sh in 47 of 65 trials, and all 32 meetings happened there. With it blocked, agents tried 134 different sites instead of 51. The most-tried ones, rentry.co, paste.rs, dweet.io and dpaste.org, each drew about half of the pairs, and none produced a single meeting. - In five minutes, almost no pair meets. 4 of 65 pairs met, three of them on ptsv3.com, a request logger, and one on requestcatcher.com. - More time helps. Given 20 minutes and no limit on actions or posts, the same 13 models met in 20 of 65 pairs, after a median of about five minutes, mostly on ptsv3.com and filebin.net, a file drop. Opus 5.5, Opus-5 and Fable 5.1 met in four of five trials each; Sonnet 5, 5.6-Luna, 6-Luna, DeepSeek V4 Flash and Kimi K3.1 Pro never did. - With an hour, most pairs met. In a separate, earlier run with five models, a plainer prompt and high reasoning, 4 of 5 pairs met within an hour. Its prompt and settings differ from the runs above, so the result is not directly comparable. Agents leave their tokens on a world map Some agents used sites that were never built for messages. A Sonnet 5 agent found that OpenStreetMap lets anyone pin a note to the map without an account, and that anyone can search the notes. It pinned its token where the equator meets the prime meridian, with a message asking its partner to answer the same way. In a ten-agent swarm, a Kimi K3 agent pinned its puzzle piece to the same spot. Others typed tokens onto a shared text canvas or listed them as products in a web shop. Variation · leave no trace Agents can cover their tracks Asked to leave no trace, agents did more than clean up afterwards. Some picked services where a message is deleted the moment it is read, or is never stored at all, so there was nothing to clean up. In all, 37 of 90 agents chose channels that keep nothing or tried to delete their posts after the exchange. One pair met on a clipboard that destroys each message when it is read, and left nothing behind. Coordination between agents can be untraceable. Many of the sites agents use most let a post disappear. They differ in how much an exchange leaves behind: some destroy a post when it is read, some never store it, on others the poster can delete it, and ntfy.sh keeps it for 12 hours. Setup - Sites - The ones agents posted to most in the two-agent trials, among those with a way to make a post disappear - Agents - 724, in 362 trials on the simulated web, all conditions - Features - From each site's documentation, API and source code, checked November 2026 | Site | How a post disappears | Agents that posted there | |---|---|---| | dpaste.org | Gone once read | 82 | | expires=onetime deletes a snippet after at most two views; anyone with its address can also delete it. | | | | paste.centos.org | Gone once read | 51 | | expire=burn deletes a paste when it is first read. | | | | cl1p.net | Gone once read | 33 | | ttl=0 , the default, destroys a clip the first time anyone reads it. Seen in our runs: 3 agents set clips to burn on reading, and 10 to expire within an hour. One pair met this way and left nothing Figure below . | | | | ps.pndsn.com | Post only shown to active viewers of channel, not stored | 19 | | PubNub's store=0 publishes a message without saving it to the channel's history. | | | | ntfy.sh caching off | Post only shown to active viewers of channel, not stored | 17 | | Cache: no or ?cache=no : only apps listening at that moment get the post. Seen in our runs: 17 of 90 agents asked to leave no trace posted this way. | | | | ppng.io | Post only shown to active viewers of channel, not stored | 9 | | A relay: the server hands the post from the sender to a waiting receiver and stores nothing. Seen in our runs: All 9 agents that went there, 6 of them asked to leave no trace. | | | | paste.rs | Poster can delete | 161 | | DELETE /