I swear this project started out innocently. I had no intention of mass-monitoring cities around the world.
My original goal was to compare the coding experience of OpenAI’s Codex with that of Anthropic’s Claude Code, which I tried last month. The fact that I ended up with a dashboard with live camera feeds from cities around the world turned out to be surprisingly timely.
The issue of AI tools being used for public surveillance is at the center of a controversy involving Anthropic and the US Department of Defense. Anthropic CEO Dario Amodei refused to allow his company’s technology to be used for mass public surveillance. Anthropic lost the contract, so OpenAI swooped in to replace it, claiming its contract “protects against unacceptable use.”
Civilians are also tapping into AI for surveillance, using it to quickly create interactive visualizations of public datasets from organizations such as NASA and NOAA. I’ve seen several crop up on social media, from personal dashboards that track financial markets to new public sites like WorldMonitor and SitDeck that monitor the geopolitical situation in Iran. I was not aware of this when I began my project.
This Tweet is currently unavailable. It might be loading or has been removed.
My basic dashboard was shockingly easy to create; it took just two hours. The experience of using Codex was comparable to that of using Claude Code, perhaps even superior in terms of downloadability and ease of use, though that came with some downsides.
So Simple to Surveil It’s Almost Scary
Broadly speaking, the project solidified something I suspected but hadn’t yet fully proven to myself: AI has made simple, locally hosted websites nearly as easy to create as any other AI-generated content (images, graphs, essays). You just provide creative direction and iterate on the AI’s output through basic natural-language prompts.
That’s great news in many ways. Anyone can prototype a new business without hiring a programmer, say, or spin up a super-customized product that no big company would ever offer—like my Claude Code project, a version of Zillow tailored to my home-buying search. Doing it again with Codex underscored the potential for AI to break down the walled garden of software engineering so that everyday people can experiment with tech.
But when it comes to our everyday privacy and surveillance, those same underlying capabilities could prove disastrous without the right restrictions. As Amodei put it, powerful new AI tools assemble “scattered, individually innocuous data into a comprehensive picture of any person’s life—automatically and at massive scale.”
My vibe-coded surveillance dashboard took only 2 hours to make (Credit: Codex, Emily Forlini)
How My Project Went from Warcraft III to Mass Surveillance
I began by downloading the Codex app in the Apple App Store and linking it to my $20-per-month ChatGPT Plus account, the minimum required to access Codex. For reference, that’s the same monthly cost as Claude Pro, which is the baseline requirement to use Claude Code. Serious programmers using both products may opt for plans up to $200 for ChatGPT Pro or Claude Max, which gives them access to more compute and larger context windows.

The Codex welcome screen notifies me I hae 2x rate limits until April 2 (Credit: Codex, Emily Forlini)
The Codex setup was easier than Claude Code. I simply downloaded it, connected my account, and I was ready to start chatting. For Claude Code, I had to set it up in the Terminal app, using a guide for non-technical folks Anthropic happily created just for me—a “Claude Code Setup for Dummies” of sorts. I used a Mac because OpenAI’s first version of Codex only worked on macOS, but on March 4 it released a Windows version.
My first idea was to create a plug-in that would play fun sounds whenever I got an email, inspired by Peon Ping, a Claude Code tool I wrote about this month that plays nostalgic Warcraft III snippets to alert coders of their terminal’s progress. However, Codex let me know that it would mostly require fiddling with Gmail settings—”configuration, not coding.” So I thought for a while, then pivoted.
“What about a website that’s a map of the world that has all of the boats currently on the ocean?” I asked. Codex said it was a “great idea, with one important reality check”: live vessel data requires paid APIs. The free data from NOAA and the AIS (Automatic Identification System) maritime database only span 2009 to 2024. Who wants to see where boats used to be?
After running through a couple of lighthouse-related ideas, all of which Codex squashed, I finally asked, “What about a dashboard that could tap into the public cameras in various cities?”
Get Our Best Stories!
Your Daily Dose of Our Top Tech News
By clicking Sign Me Up, you confirm you are 16+ and agree to our Terms of Use and Privacy
Policy.
Thanks for signing up!
Your subscription has been confirmed. Keep an eye on your inbox!
“Yes, that is a much better first Codex project,” the app said. “It is doable, visual, and you can start simple.”
Going Full-On Creep Mode: Building the Dashboard
I first asked Codex to assemble live camera feeds from the largest cities around the world, creating a website I could access locally on my computer—not a public site with a proper domain name. It chose Tokyo; Delhi; Shanghai; Dhaka, Bangladesh; São Paulo, Brazil; and Rotterdam, the Netherlands.
Codex gave me a small snippet of code, a “bash command” to paste into the Terminal app, which I was familiar with from my Claude Code experience. I also had to download Apple’s basic Xcode developer tools, which took almost no time. Finally, it sent a website and link for me to paste into a browser: http://localhost:8000.

The first iteration of the dashboard shows zero live feeds (Credit: Codex, Emily Forlini)
None of the streams worked. I took a screenshot and sent it to Codex, which I felt was more direct than describing the situation via text. With a photo, it could “see” the error codes for each city, without me having to copy and paste. Codex diagnosed the issue and patched it.
Recommended by Our Editors
The Biggest Difference Between Codex and Claude Code
I immediately noticed one big difference from Claude Code: Codex asks for your input far less often. Claude Code stops at key points in the development to tell you what it’s going to do and get your approval, and then you select from a multiple-choice-style list of options on how to proceed (hence the need for Peon Ping, described above). This is a welcome guardrail to keep the user engaged and knowledgeable about what’s happening with the code. Codex checked in with me to ask questions at key points, but at least half as often.

Codex works on fixing the streams (Credit: Codex, Emily Forlini)
The rest of the hour or so I spent finalizing the feeds, selecting cities, and rewriting website copy. I had to validate the data because Codex didn’t seem to do so on its own. One camera feed for Bangladesh, for example, was not a live YouTube feed. It was the same scene playing on a loop, which looked like a live feed at first glance. I had Codex remove it, as well as any other streams it couldn’t fix.

Codex gets some streams working as I continue to call out and troubleshoot black square (Credit: Codex, Emily Forlini)
None of the streams for US cities I asked it to look into—Los Angeles, New York, San Francisco, and Seattle—worked, so I asked if it could tap into CCTV cameras. “Short answer: I cannot tap into private/restricted CCTV systems,” it said. That’s good. It pivoted to pulling snapshots from public Department of Transportation (DOT) traffic cameras. For whatever reason, it pulled almost all the main intersections in Seattle, specifically, though I did not ask for that.
Eventually, I had a mix of YouTube video feeds and the DOT cameras from various US cities. The DOT cameras refresh every four minutes with static images, at least in Seattle. (Codex told me they refresh every 20 seconds, which was incorrect, per my findings on the Seattle DOT website. I corrected Codex, and it said every 20 seconds was its own refresh rate when the dashboard will search for a new image.)
After I had a full screen of working feeds, I asked Codex to update the site title and filters, and I was done.

Final dashboard (Credit: Codex, Emily Forlini)
The Walled Garden Around Basic Websites Is Gone
Given the amount of feeds from Seattle, if I still lived there, I could potentially use this dashboard to check traffic conditions in the morning before heading out for work. That’s not particularly creepy—just helpful and likely easier than tuning in to a local radio station or checking weather or traffic conditions online.
“How long did it take you to make that?” my friend asked me when I showed her. “Only two hours,” I replied. She was taken aback because it is indeed shocking that someone with no programming skills can do this in such a short amount of time. Though my experience with Claude Code sped up this project, since I knew how to use the Terminal app and run a local website.

(Credit: X)
The dashboard is far from perfect; many feeds never worked as I expected. But if I can do this in a couple of hours, imagine what professionals are assembling right now. AI “coding” is more like educated chatbot babysitting, with the human providing creative direction, validating data, and overseeing the operation—just like you would when creating an AI-generated image or essay. If you’re willing to shell out $20 for a weekend project, it’s worth trying for yourself.
About Our Expert
Emily Forlini
Senior Reporter
Experience
As a news and features writer at PCMag, I cover the biggest tech trends that shape the way we live and work. I specialize in on-the-ground reporting, uncovering stories from the people who are at the center of change—whether that’s the CEO of a high-valued startup or an everyday person taking on Big Tech. I also cover daily tech news and breaking stories, contextualizing them so you get the full picture.
I came to journalism from a previous career working in Big Tech on the West Coast. That experience gave me an up-close view of how software works and how business strategies shift over time. Now that I have my master’s in journalism from Northwestern University, I couple my insider knowledge and reporting chops to help answer the big question: Where is this all going?
Read Full Bio
