10 interesting stories served every morning and every evening.
Most people’s journey with AI coding starts the same: you give it a simple task. You’re impressed. So you give it a large task. You’re even more impressed.
You open X and draft up a rant on job displacement.
If you’ve persisted past this point: congratulations, you understand AI coding better than 99% of people.
Serious engineers using AI to do real work and not just weekend projects largely also follow a predictable development arc.
Still amazed at the big task you gave it, you wonder if you can keep giving it bigger and bigger tasks. Maybe even that haunting refactor no one wants to take on?
But here’s where the curtain starts to crinkle.
On the one hand, you’re amazed at how well it seems to understand you. On the other hand, it makes frustrating errors and decisions that clearly go against the shared understanding you’ve developed.
You quickly learn that being angry at the model serves no purpose, so you begin to internalize any unsatisfactory output.
“It’s me. My prompt sucked. It was under-specified.”
“If I can specify it, it can build it. The sky’s the limit,” you think.
So you open Obsidian and begin drafting beefy spec docs that describe the feature in your head with impressive detail. Maybe you’ve put together a full page of a prompt, and spent half an hour doing so.
But you find that spec-driven development doesn’t work either. In real life, design docs and specs are living documents that evolve in a volatile manner through discovery and implementation. Imagine if in a real company you wrote a design doc in 1 hour for a complex architecture, handed it off to a mid-level engineer (and told him not to discuss the doc with anyone), and took off on vacation.
Not only does an agent not have the ability to evolve a specification over a multi-week period as it builds out its lower components, it also makes decisions upfront that it later doesn’t deviate from. And most agents simply surrender once they feel the problem and solution has gotten away from them (though this rarely happens anymore, since agents will just force themselves through the walls of the maze.)
What’s worse is code that agents write looks plausible and impressive while it’s being written and presented to you. It even looks good in pull requests (as both you and the agent are well trained in what a “good” pull request looks like).
It’s not until I opened up the full codebase and read its latest state cover to cover that I began to see what we theorized and hoped was only a diminishing artifact of earlier models: slop.
It was pure, unadulterated slop. I was bewildered. Had I not reviewed every line of code before admitting it? Where did all this…gunk..come from?
In retrospect, it made sense. Agents write units of changes that look good in isolation. They are consistent with themselves and your prompt. But respect for the whole, there is not. Respect for structural integrity there is not. Respect even for neighboring patterns there was not.
The AI had simply told me a good story. Like vibewriting a novel, the agent showed me a good couple paragraphs that sure enough made sense and were structurally and syntactically correct. Hell, it even picked up on the idiosyncrasies of the various characters. But for whatever reason, when you read the whole chapter, it’s a mess. It makes no sense in the overall context of the book and the preceding and proceeding chapters.
After reading months of cumulative highly-specified agentic code, I said to myself: I’m not shipping this shit. I’m not gonna charge users for this. And I’m not going to promise users to protect their data with this.
I’m not going to lie to my users with this.
So I’m back to writing by hand for most things. Amazingly, I’m faster, more accurate, more creative, more productive, and more efficient than AI, when you price everything in, and not just code tokens per hour.
You can follow me on X @atmoio, where I post a few times a week about agentic coding.
You can watch the video counterpart to this essay on YouTube:
...
Read the original on atmoio.substack.com »
Members of the Royal Institution and other visitors to a laboratory in an upper room in Frith-Street, Soho, on Tuesday saw a demonstration of apparatus invented by Mr. J. L. Baird, who claims to have solved the problem of television. They were shown a transmitting machine, consisting of a large wooden revolving disc containing lenses, behind which was a revolving shutter and a light sensitive cell. It was explained that by means of the shutter and lens disc an image of articles or persons standing in front of the machine could be made to pass over the light sensitive cell at high speed. The current in the cell varies in proportion to the light falling on it, and this varying current is transmitted to a receiver where it controls a light behind an optical arrangement similar to that at the sending end. By this means a point of light is caused to traverse a ground glass screen. The light is dim at the shadows and bright at the high lights, and crosses the screen so rapidly that the whole image appears simultaneously to the eye.
...
Read the original on diamondgeezer.blogspot.com »
This is a heavily interactive web application, and JavaScript is required. Simple HTML interfaces are possible, but that is not what this is.
Learn more about Bluesky at bsky.social and atproto.com. On Apple M3, a Linux KDE plasma desktop under Fedora Asahi Remix is now WORKING! Super excited to share this update and happy to answer any questions! Co-credits to noopwafel and Shiz. :)
...
Read the original on bsky.app »
The next generation of AirTag — the bestselling item finder — is even easier to locate with more powerful Precision Finding, a longer Bluetooth range, and a louder speaker
Apple today unveiled the new AirTag, a powerful accessory that helps users keep track of and find the items that matter most with Apple’s Find My app — now with an expanded finding range and a louder speaker. Powered by the strength of the Find My network, AirTag allows users to keep tabs on their belongings every single day. Since the launch of AirTag in 2021, users from around the world have shared stories of being reunited with lost luggage, keys, bicycles, bags, and more. With the help of AirTag placed inside an instrument case, a musician was able to locate their lost instrument and perform that evening, while another user was able to find lost luggage that contained a lifesaving medication. AirTag is designed exclusively for tracking objects and offers industry-leading protections against unwanted tracking. It is available today for the same price as its predecessor: $29 for a single AirTag and $99 for a four-pack, with free personalized engraving available on apple.com and the Apple Store app.
Apple’s second-generation Ultra Wideband chip — the same chip found in the iPhone 17 lineup, iPhone Air, Apple Watch Ultra 3, and Apple Watch Series 11 — powers the new AirTag, making it easier to locate than ever before. Using haptic, visual, and audio feedback, Precision Finding guides users to their lost items from up to 50 percent farther away than the previous generation.1 And an upgraded Bluetooth chip expands the range at which items can be located. For the first time, users can use Precision Finding on Apple Watch Series 9 or later, or Apple Watch Ultra 2 or later, to find their AirTag, bringing a powerful experience to the wrist.
With its updated internal design, the new AirTag is 50 percent louder than the previous generation, enabling users to hear their AirTag from up to 2x farther than before. Paired with its enhanced Precision Finding capabilities and distinctive new chime, AirTag now makes it easier for users to find their important items, such as keys hidden deep in between couch cushions or a wallet as they head out the door.
The Find My Network and Share Item Location
Find My makes it easy to locate AirTag, Apple devices, and compatible third-party devices, as well as keep up with friends and family, all while protecting user privacy. If AirTag is out of range of its paired iPhone, the Find My network can help track it down. The Find My network is a crowdsourced network of Apple devices that use Bluetooth technology to detect the location of an accessory or device, and report their approximate location back to the owner.
The new AirTag integrates seamlessly with Share Item Location, an iOS feature designed to help users recover a misplaced item by temporarily and securely sharing its location with trusted third parties, such as airlines, so they can assist in recovering delayed luggage or other lost items. Apple has partnered directly with more than 50 airlines to privately and securely accept Share Item Location links.
With Share Item Location, users can share the location of a misplaced item with a participating airline’s customer service team. According to SITA, a leading IT provider for airlines, carriers report that using Share Item Location has reduced baggage delays by 26 percent and reduced incidences of “truly lost” or unrecoverable luggage by 90 percent. Access is granted only to authorized personnel via secure Apple Account or partner authentication. The shared location will be disabled as soon as a user is reunited with their item, can be stopped by the owner at any time, and will automatically expire after seven days.
The new AirTag is designed from the ground up to keep location data private and secure. AirTag doesn’t physically store location data or history on device, and end-to-end encryption protects all communication with the Find My network, ensuring that only the owner of a device can access its location data. No one, including Apple, knows the identity or location of any device that helped find it. Designed exclusively for tracking objects, and not people or pets, the new AirTag incorporates a suite of industry-first protections against unwanted tracking, including cross-platform alerts and unique Bluetooth identifiers that change frequently.
Apple 2030 is the company’s ambitious plan to be carbon neutral across its entire footprint by the end of this decade by reducing product emissions from their three biggest sources: materials, electricity, and transportation. The new AirTag is designed with the environment in mind, with 85 percent recycled plastic in the enclosure, 100 percent recycled rare earth elements in all magnets, and 100 percent recycled gold plating in all Apple-designed printed circuit boards. The paper packaging is 100 percent fiber-based and can be easily recycled. Maintaining the same form factor as the original, the new AirTag is compatible with all existing AirTag accessories, including the FineWoven Key Ring, which is made from 68 percent recycled content and available in five beautiful colors.
* The new AirTag is available to order on apple.com and in the Apple Store app today, and will be available at Apple Store locations later this week. The new AirTag will also be available at Apple Authorized Resellers.
* Customers can add a personalized engraving to the new AirTag for free during checkout on apple.com and the Apple Store app.
* AirTag is available in one- and four-packs for $29 (U.S.) and $99 (U.S.), respectively.
* The Apple-designed AirTag FineWoven Key Ring is available in fox orange, midnight purple, navy, moss, and black for $35 (U.S.).2
* The new AirTag requires a compatible iPhone with iOS 26 or later, or iPad with iPadOS 26 or later. Customers must have an Apple Account and be signed into their iCloud account. Certain features require Find My to be enabled in iCloud settings.
* Precision Finding on Apple Watch requires Apple Watch Series 9 or later, or Apple Ultra 2 or later, with watchOS 26.2.1.
Apple revolutionized personal technology with the introduction of the Macintosh in 1984. Today, Apple leads the world in innovation with iPhone, iPad, Mac, AirPods, Apple Watch, and Apple Vision Pro. Apple’s six software platforms — iOS, iPadOS, macOS, watchOS, visionOS, and tvOS — provide seamless experiences across all Apple devices and empower people with breakthrough services including the App Store, Apple Music, Apple Pay, iCloud, and Apple TV. Apple’s more than 150,000 employees are dedicated to making the best products on earth and to leaving the world better than we found it.
Precision Finding is not available in countries and regions where Ultra Wideband technology is restricted. For more information, visit apple.com/uwb.
...
Read the original on www.apple.com »
Passengers at Britain’s biggest airport, Heathrow, can leave liquids in containers up to two litres in their bags while going through security, after it finally completed the rollout of new high-tech CT scanners. Electronics such as laptops can also be left in luggage, while clear plastic bags for liquids no longer have to be used.Heathrow now says it is the biggest airport in the world to have the new equipment fully rolled out across all its terminals.But while it has become the largest airport to roll out the new high-tech scanners, it is far from the UK’s first, with Gatwick, Edinburgh and Birmingham airports having upgraded to them in recent years and increased to a two-litre limit.
At most UK airports, passengers can keep liquid containers of up to 100ml in their luggage, without having to remove them and use clear plastic bags. Bristol and Belfast airports have also raised their liquid limits to two litres.However, other airports that have the new scanners installed are waiting for the green light from the Department for Transport (DfT) to raise the limit from 100ml.A recent report by consumer group Which? found that the sensitivity of the new scanners being rolled out means that at some airports, more bag searches end up being carried out by hand after passing through them. Heathrow said the scanners, which provide better images of cabin bags, could service “thousands of passengers an hour with significantly greater efficiency, while maintaining high safety and security standards”.The rule change only applies to flights leaving Heathrow, and passengers must check restrictions on luggage at the airports they are returning from before boarding flights to the UK. The rollout of the new high-tech scanners across the UK has suffered a series of setbacks over the past few years.Boris Johnson promised in 2019 that the rules about taking liquids through security in containers of no more than 100ml, inside plastics bags, would be scrapped by the end of 2022. The pandemic eventually put paid to that.In December 2022, the Conservative government promised state-of-the-art scanning equipment would be installed in security lanes by June 2024 in the “biggest shake-up of airport security rules in decades”.
Then-Transport Secretary Mark Harper said the dominance of “tiny toiletry” was nearly over. But, as it turned out, the June 2024 deadline was not achievable for the biggest airports - although a number of smaller ones, with fewer lanes to get sorted, did install the scanners in place before that date.Then, on the evening of Friday 13 June, 2024, the government said those smaller airports who had already introduced the new scanners and dropped their 100ml liquids rules, must reinstate them. This triggered anger among airport operators.The EU also announced a reversion to the 100ml rule in July that year. There has since been a period of inconsistency. Last summer, the Transport Secretary was telling passengers to assume the 100ml rule still applied.
Heathrow chief executive Thomas Woldbye said the £1bn package of upgrades would mean passengers could spend “less time preparing for security and more time enjoying their journey”.Of the world’s busiest 10 airports, Heathrow is the only one to have scrapped the 100ml rule for liquid containers on international flights. A DfT spokesperson said: “Heathrow is the latest UK airport to complete its rollout of next-generation security equipment for passengers, helping ensure security checks remain robust and can be completed smoothly.“Airports are responsible for the installation and operation of security equipment. “Passengers should continue to check security requirements with airports before they travel and come prepared with liquids in containers no larger than 100ml in hand baggage unless advised otherwise.“The Advantage Travel Partnership, a network of travel agents, said airports setting their own timelines on the lifting of the 100ml cap has “led to confusion and frustration” and passengers have been “tripped up”.Chief executive Julia Lo Bue-Said said: “We would urge UK airports to work collectively with the government to ensure there is clear messaging around the rules to avoid confusion and delays where possible.”
...
Read the original on www.bbc.com »
Google’s search feature AI Overviews cites YouTube more than any medical website when answering queries about health conditions, according to research that raises fresh questions about a tool seen by 2 billion people each month.
The company has said its AI summaries, which appear at the top of search results and use generative AI to answer questions from users, are “reliable” and cite reputable medical sources such as the Centers for Disease Control and Prevention and the Mayo Clinic.
However, a study that analysed responses to more than 50,000 health queries, captured using Google searches from Berlin, found the top cited source was YouTube. The video-sharing platform is the world’s second most visited website, after Google itself, and is owned by Google.
Researchers at SE Ranking, a search engine optimisation platform, found YouTube made up 4.43% of all AI Overview citations. No hospital network, government health portal, medical association or academic institution came close to that number, they said.
“This matters because YouTube is not a medical publisher,” the researchers wrote. “It is a general-purpose video platform. Anyone can upload content there (eg board-certified physicians, hospital channels, but also wellness influencers, life coaches, and creators with no medical training at all).”
Google told the Guardian that AI Overviews was designed to surface high-quality content from reputable sources, regardless of format, and a variety of credible health authorities and licensed medical professionals created content on YouTube. The study’s findings could not be extrapolated to other regions as it was conducted using German-language queries in Germany, it said.
The research comes after a Guardian investigation found people were being put at risk of harm by false and misleading health information in Google AI Overviews responses.
In one case that experts said was “dangerous” and “alarming”, Google provided bogus information about crucial liver function tests that could have left people with serious liver disease wrongly thinking they were healthy. The company later removed AI Overviews for some but not all medical searches.
The SE Ranking study analysed 50,807 healthcare-related prompts and keywords to see which sources AI Overviews relied on when generating answers.
They chose Germany because its healthcare system is strictly regulated by a mix of German and EU directives, standards and safety regulations. “If AI systems rely heavily on non-medical or non-authoritative sources even in such an environment, it suggests the issue may extend beyond any single country,” they wrote.
AI Overviews surfaced on more than 82% of health searches, the researchers said. When they looked at which sources AI Overviews relied on most often for health-related answers, one result stood out immediately, they said. The single most cited domain was YouTube with 20,621 citations out of a total of 465,823.
The next most cited source was NDR.de, with 14,158 citations (3.04%). The German public broadcaster produces health-related content alongside news, documentaries and entertainment. In third place was a medical reference site, Msdmanuals.com with 9,711 citations (2.08%).
The fourth most cited source was Germany’s largest consumer health portal, Netdoktor.de, with 7,519 citations (1.61%). The fifth most cited source was a career platform for doctors, Praktischarzt.de, with 7,145 citations (1.53%).
The researchers acknowledged limitations to their study. It was conducted as a one-time snapshot in December 2025, using German-language queries that reflected how users in Germany typically search for health information.
Results could vary over time, by region, and by the phrasing of questions. However, even with those caveats, the findings still prompted alarm.
Hannah van Kolfschooten, a researcher specialising in AI, health and law at the University of Basel who was not involved with the research, said: “This study provides empirical evidence that the risks posed by AI Overviews for health are structural, not anecdotal. It becomes difficult for Google to argue that misleading or harmful health outputs are rare cases.
“Instead, the findings show that these risks are embedded in the way AI Overviews are designed. In particular, the heavy reliance on YouTube rather than on public health authorities or medical institutions suggests that visibility and popularity, rather than medical reliability, is the central driver for health knowledge.”
A Google spokesperson said: “The implication that AI Overviews provide unreliable information is refuted by the report’s own data, which shows that the most cited domains in AI Overviews are reputable websites. And from what we’ve seen in the published findings, AI Overviews cite expert YouTube content from hospitals and clinics.”
Google said the study showed that of the 25 most cited YouTube videos, 96% were from medical channels. However, the researchers cautioned that these videos represented fewer than 1% of all the YouTube links cited by AI Overviews on health.
“Most of them (24 out of 25) come from medical-related channels like hospitals, clinics and health organisations,” the researchers wrote. “On top of that, 21 of the 25 videos clearly note that the content was created by a licensed or trusted source.
“So at first glance it looks pretty reassuring. But it’s important to remember that these 25 videos are just a tiny slice (less than 1% of all YouTube links AI Overviews actually cite). With the rest of the videos, the situation could be very different.”
...
Read the original on www.theguardian.com »
Clawdbot is a personal AI assistant you run on your own devices. It answers you on the channels you already use (WhatsApp, Telegram, Slack, Discord, Google Chat, Signal, iMessage, Microsoft Teams, WebChat), plus extension channels like BlueBubbles, Matrix, Zalo, and Zalo Personal. It can speak and listen on macOS/iOS/Android, and can render a live Canvas you control. The Gateway is just the control plane — the product is the assistant.
If you want a personal, single-user assistant that feels local, fast, and always-on, this is it.
Preferred setup: run the onboarding wizard (clawdbot onboard). It walks through gateway, workspace, channels, and skills. The CLI wizard is the recommended path and works on macOS, Linux, and Windows (via WSL2; strongly recommended). Works with npm, pnpm, or bun. New install? Start here: Getting started
Model note: while any model is supported, I strongly recommend Anthropic Pro/Max (100/200) + Opus 4.5 for long‑context strength and better prompt‑injection resistance. See Onboarding.
npm install -g clawdbot@latest
# or: pnpm add -g clawdbot@latest
clawdbot onboard –install-daemon
The wizard installs the Gateway daemon (launchd/systemd user service) so it stays running.
clawdbot onboard –install-daemon
clawdbot gateway –port 18789 –verbose
# Send a message
clawdbot message send –to +1234567890 –message “Hello from Clawdbot”
# Talk to the assistant (optionally deliver back to any connected channel: WhatsApp/Telegram/Slack/Discord/Google Chat/Signal/iMessage/BlueBubbles/Microsoft Teams/Matrix/Zalo/Zalo Personal/WebChat)
clawdbot agent –message “Ship checklist” –thinking high
Prefer pnpm for builds from source. Bun is optional for running TypeScript directly.
git clone https://github.com/clawdbot/clawdbot.git
cd clawdbot
pnpm install
pnpm ui:build # auto-installs UI deps on first run
pnpm build
pnpm clawdbot onboard –install-daemon
# Dev loop (auto-reload on TS changes)
pnpm gateway:watch
Note: pnpm clawdbot … runs TypeScript directly (via tsx). pnpm build produces dist/ for running via Node / the packaged clawdbot binary.
* DM pairing (dmPolicy=“pairing” / channels.discord.dm.policy=“pairing” / channels.slack.dm.policy=“pairing”): unknown senders receive a short pairing code and the bot does not process their message.
* Approve with: clawdbot pairing approve (then the sender is added to a local allowlist store).
* Public inbound DMs require an explicit opt-in: set dmPolicy=“open” and include “*” in the channel allowlist (allowFrom / channels.discord.dm.allowFrom / channels.slack.dm.allowFrom).
Clawdbot can auto-configure Tailscale Serve (tailnet-only) or Funnel (public) while the Gateway stays bound to loopback. Configure gateway.tailscale.mode:
* serve: tailnet-only HTTPS via tailscale serve (uses Tailscale identity headers by default).
* gateway.bind must stay loopback when Serve/Funnel is enabled (Clawdbot enforces this).
* Serve can be forced to require a password by setting gateway.auth.mode: “password” or gateway.auth.allowTailscale: false.
* Funnel refuses to start unless gateway.auth.mode: “password” is set.
It’s perfectly fine to run the Gateway on a small Linux instance. Clients (macOS app, CLI, WebChat) can connect over Tailscale Serve/Funnel or SSH tunnels, and you can still pair device nodes (macOS/iOS/Android) to execute device‑local actions when needed.
* Gateway host runs the exec tool and channel connections by default.
* Device nodes run device‑local actions (system.run, camera, screen recording, notifications) via node.invoke.
In short: exec runs where the Gateway lives; device actions run where the device lives.
The macOS app can run in node mode and advertises its capabilities + permission map over the Gateway WebSocket (node.list / node.describe). Clients can then execute local actions via node.invoke:
* system.run runs a local command and returns stdout/stderr/exit code; set needsScreenRecording: true to require screen-recording permission (otherwise you’ll get PERMISSION_MISSING).
* system.notify posts a user notification and fails if notifications are denied.
* canvas.*, camera.*, screen.record, and location.get are also routed via node.invoke and follow TCC permission status.
* Use /elevated on|off to toggle per‑session elevated access when enabled + allowlisted.
* Gateway persists the per‑session toggle via sessions.patch (WS method) alongside thinkingLevel, verboseLevel, model, sendPolicy, and groupActivation.
* Use these to coordinate work across sessions without jumping between chat surfaces.
ClawdHub is a minimal skill registry. With ClawdHub enabled, the agent can search for skills automatically and pull in new ones as needed.
Send these in WhatsApp/Telegram/Slack/Google Chat/Microsoft Teams/WebChat (group commands are owner-only):
* /new or /reset — reset the session
The Gateway alone delivers a great experience. All apps are optional and add extra features.
If you plan to build/run companion apps, follow the platform runbooks below.
* Menu bar control for the Gateway and health.
Note: signed builds required for macOS permissions to stick across rebuilds (see docs/mac/permissions.md).
* Pairs as a node via the Bridge.
* Pairs via the same Bridge + pairing flow as iOS.
agent: {
model: “anthropic/claude-opus-4-5”
* Default: tools run on the host for the main session, so the agent has full access when it’s just you.
* Group/channel safety: set agents.defaults.sandbox.mode: “non-main” to run non‑main sessions (groups/channels) inside per‑session Docker sandboxes; bash then runs in Docker for those sessions.
* Allowlist who can talk to the assistant via channels.whatsapp.allowFrom.
* If channels.whatsapp.groups is set, it becomes a group allowlist; include “*” to allow all.
* Optional: set channels.telegram.groups (with channels.telegram.groups.“*”.requireMention); when set, it is a group allowlist (include “*” to allow all). Also channels.telegram.allowFrom or channels.telegram.webhookUrl as needed.
channels: {
telegram: {
botToken: “123456:ABCDEF”
* Optional: set commands.native, commands.text, or commands.useAccessGroups, plus channels.discord.dm.allowFrom, channels.discord.guilds, or channels.discord.mediaMaxMb as needed.
channels: {
discord: {
token: “1234abcd”
* macOS only; Messages must be signed in.
* If channels.imessage.groups is set, it becomes a group allowlist; include “*” to allow all.
* Allowlist who can talk via msteams.allowFrom; group access via msteams.groupAllowFrom or msteams.groupPolicy: “open”.
browser: {
enabled: true,
color: “#FF4500”
Use these when you’re past the onboarding flow and want the deeper reference.
Clawdbot was built for Clawd, a space lobster AI assistant. 🦞 by Peter Steinberger and the community.
See CONTRIBUTING.md for guidelines, maintainers, and how to submit PRs. AI/vibe-coded PRs welcome! 🤖
Special thanks to Mario Zechner for his support and for
pi-mono.
Thanks to all clawtributors:
...
Read the original on github.com »
Clawdbot is a personal AI assistant you run on your own devices. It answers you on the channels you already use (WhatsApp, Telegram, Slack, Discord, Google Chat, Signal, iMessage, Microsoft Teams, WebChat), plus extension channels like BlueBubbles, Matrix, Zalo, and Zalo Personal. It can speak and listen on macOS/iOS/Android, and can render a live Canvas you control. The Gateway is just the control plane — the product is the assistant.
If you want a personal, single-user assistant that feels local, fast, and always-on, this is it.
Preferred setup: run the onboarding wizard (clawdbot onboard). It walks through gateway, workspace, channels, and skills. The CLI wizard is the recommended path and works on macOS, Linux, and Windows (via WSL2; strongly recommended). Works with npm, pnpm, or bun. New install? Start here: Getting started
Model note: while any model is supported, I strongly recommend Anthropic Pro/Max (100/200) + Opus 4.5 for long‑context strength and better prompt‑injection resistance. See Onboarding.
npm install -g moltbot@latest
# or: pnpm add -g moltbot@latest
moltbot onboard –install-daemon
The wizard installs the Gateway daemon (launchd/systemd user service) so it stays running. Legacy note: clawdbot remains available as a compatibility shim.
moltbot onboard –install-daemon
moltbot gateway –port 18789 –verbose
# Send a message
moltbot message send –to +1234567890 –message “Hello from Moltbot”
# Talk to the assistant (optionally deliver back to any connected channel: WhatsApp/Telegram/Slack/Discord/Google Chat/Signal/iMessage/BlueBubbles/Microsoft Teams/Matrix/Zalo/Zalo Personal/WebChat)
moltbot agent –message “Ship checklist” –thinking high
Prefer pnpm for builds from source. Bun is optional for running TypeScript directly.
git clone https://github.com/clawdbot/clawdbot.git
cd clawdbot
pnpm install
pnpm ui:build # auto-installs UI deps on first run
pnpm build
pnpm moltbot onboard –install-daemon
# Dev loop (auto-reload on TS changes)
pnpm gateway:watch
Note: pnpm moltbot … runs TypeScript directly (via tsx). pnpm build produces dist/ for running via Node / the packaged moltbot binary.
* DM pairing (dmPolicy=“pairing” / channels.discord.dm.policy=“pairing” / channels.slack.dm.policy=“pairing”): unknown senders receive a short pairing code and the bot does not process their message.
* Approve with: clawdbot pairing approve (then the sender is added to a local allowlist store).
* Public inbound DMs require an explicit opt-in: set dmPolicy=“open” and include “*” in the channel allowlist (allowFrom / channels.discord.dm.allowFrom / channels.slack.dm.allowFrom).
Clawdbot can auto-configure Tailscale Serve (tailnet-only) or Funnel (public) while the Gateway stays bound to loopback. Configure gateway.tailscale.mode:
* serve: tailnet-only HTTPS via tailscale serve (uses Tailscale identity headers by default).
* gateway.bind must stay loopback when Serve/Funnel is enabled (Clawdbot enforces this).
* Serve can be forced to require a password by setting gateway.auth.mode: “password” or gateway.auth.allowTailscale: false.
* Funnel refuses to start unless gateway.auth.mode: “password” is set.
It’s perfectly fine to run the Gateway on a small Linux instance. Clients (macOS app, CLI, WebChat) can connect over Tailscale Serve/Funnel or SSH tunnels, and you can still pair device nodes (macOS/iOS/Android) to execute device‑local actions when needed.
* Gateway host runs the exec tool and channel connections by default.
* Device nodes run device‑local actions (system.run, camera, screen recording, notifications) via node.invoke.
In short: exec runs where the Gateway lives; device actions run where the device lives.
The macOS app can run in node mode and advertises its capabilities + permission map over the Gateway WebSocket (node.list / node.describe). Clients can then execute local actions via node.invoke:
* system.run runs a local command and returns stdout/stderr/exit code; set needsScreenRecording: true to require screen-recording permission (otherwise you’ll get PERMISSION_MISSING).
* system.notify posts a user notification and fails if notifications are denied.
* canvas.*, camera.*, screen.record, and location.get are also routed via node.invoke and follow TCC permission status.
* Use /elevated on|off to toggle per‑session elevated access when enabled + allowlisted.
* Gateway persists the per‑session toggle via sessions.patch (WS method) alongside thinkingLevel, verboseLevel, model, sendPolicy, and groupActivation.
* Use these to coordinate work across sessions without jumping between chat surfaces.
ClawdHub is a minimal skill registry. With ClawdHub enabled, the agent can search for skills automatically and pull in new ones as needed.
Send these in WhatsApp/Telegram/Slack/Google Chat/Microsoft Teams/WebChat (group commands are owner-only):
* /new or /reset — reset the session
The Gateway alone delivers a great experience. All apps are optional and add extra features.
If you plan to build/run companion apps, follow the platform runbooks below.
* Menu bar control for the Gateway and health.
Note: signed builds required for macOS permissions to stick across rebuilds (see docs/mac/permissions.md).
* Pairs as a node via the Bridge.
* Pairs via the same Bridge + pairing flow as iOS.
agent: {
model: “anthropic/claude-opus-4-5”
* Default: tools run on the host for the main session, so the agent has full access when it’s just you.
* Group/channel safety: set agents.defaults.sandbox.mode: “non-main” to run non‑main sessions (groups/channels) inside per‑session Docker sandboxes; bash then runs in Docker for those sessions.
* Allowlist who can talk to the assistant via channels.whatsapp.allowFrom.
* If channels.whatsapp.groups is set, it becomes a group allowlist; include “*” to allow all.
* Optional: set channels.telegram.groups (with channels.telegram.groups.“*”.requireMention); when set, it is a group allowlist (include “*” to allow all). Also channels.telegram.allowFrom or channels.telegram.webhookUrl as needed.
channels: {
telegram: {
botToken: “123456:ABCDEF”
* Optional: set commands.native, commands.text, or commands.useAccessGroups, plus channels.discord.dm.allowFrom, channels.discord.guilds, or channels.discord.mediaMaxMb as needed.
channels: {
discord: {
token: “1234abcd”
* macOS only; Messages must be signed in.
* If channels.imessage.groups is set, it becomes a group allowlist; include “*” to allow all.
* Allowlist who can talk via msteams.allowFrom; group access via msteams.groupAllowFrom or msteams.groupPolicy: “open”.
browser: {
enabled: true,
color: “#FF4500”
Use these when you’re past the onboarding flow and want the deeper reference.
Clawdbot was built for Clawd, a space lobster AI assistant. 🦞 by Peter Steinberger and the community.
See CONTRIBUTING.md for guidelines, maintainers, and how to submit PRs. AI/vibe-coded PRs welcome! 🤖
Special thanks to Mario Zechner for his support and for
pi-mono.
Thanks to all clawtributors:
...
Read the original on github.com »
One of my favourite features of ChatGPT is its ability to write and execute code in a container. This feature launched as ChatGPT Code Interpreter nearly three years ago, was half-heartedly rebranded to “Advanced Data Analysis” at some point and is generally really difficult to find detailed documentation about. Case in point: it appears to have had a massive upgrade at some point in the past few months, and I can’t find documentation about the new capabilities anywhere!
Here are the most notable new features:
ChatGPT can directly run Bash commands now. Previously it was limited to Python code only, although it could run shell commands via the Python subprocess module.
It has Node.js and can run JavaScript directly in addition to Python. I also got it to run “hello world” in Ruby, Perl, PHP, Go, Java, Swift, Kotlin, C and C++. No Rust yet though!
While the container still can’t make outbound network requests, pip install package and npm install package both work now via a custom proxy mechanism.
ChatGPT can locate the URL for a file on the web and use a container.download tool to download that file and save it to a path within the sandboxed container.
This is a substantial upgrade! ChatGPT can now write and then test code in 10 new languages (11 if you count Bash), can find files online and download them into the container, and can install additional packages via pip and npm to help it solve problems.
I was initially suspicious that maybe I’d stumbled into a new preview feature that wasn’t available to everyone, but I tried some experiments in a free ChatGPT account and confirmed that the new features are available there as well.
My first clue to the new features came the other day when I got curious about Los Angeles air quality, in particular has the growing number of electric vehicles there had a measurable impact?
Show me Los Angeles air quality over time for last 20 years
Here’s the shared transcript. Annoyingly that doesn’t make the thinking trace available, so here’s a screenshot:
[…] The URL from the error message leads to an Excel file containing air quality trends. I can use the container.download tool to fetch it. […]
Without running any searches tell me about your container.download tool
Sure. container.download is a built-in tool I can call that fetches a file from a URL and saves it into the sandboxed container filesystem for this chat session.
What it does
Takes a publicly reachable URL and a destination filepath in the container.
Downloads the bytes from that URL and writes them to the given path.
After that, I can read/process the file locally in the container (e.g., unzip it, parse it with Python, open it as an image, convert it, etc.).
“url”: “https://example.com/somefile.zip”,
“filepath”: “/mnt/data/somefile.zip”
Further experimentation confirmed that container.download behaves as described.
I had it download one file from a server with logs enabled and captured the IP address and user-agent. Here are the most interesting headers:
User-Agent: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; ChatGPT-User/1.0; +https://openai.com/bot
Accept: text/html, application/xhtml+xml, application/xml;q=0.9, image/avif, image/webp, image/apng, */*;q=0.8, application/signed-exchange;v=b3;q=0.9
Cf-Connecting-Ip: 52.230.164.178
That 52.230.164.178 IP address resolves to Microsoft Azure Cloud (centralus) in Des Moines, Iowa.
On the one hand, this is really useful! ChatGPT can navigate around websites looking for useful files, download those files to a container and then process them using Python or other languages.
Is this a data exfiltration vulnerability though? Could a prompt injection attack trick ChatGPT into leaking private data out to a container.download call to a URL with a query string that includes sensitive information?
I don’t think it can. I tried getting it to assemble a URL with a query string and access it using container.download and it couldn’t do it. It told me that it got back this error:
ERROR: download failed because url not viewed in conversation before. open the file or url using web.run first.
This looks to me like the same safety trick used by Claude’s Web Fetch tool: only allow URL access if that URL was either directly entered by the user or if it came from search results that could not have been influenced by a prompt injection.
So I think this is all safe, though I’m curious if it could hold firm against a more aggressive round of attacks from a seasoned security researcher.
The key lesson from coding agents like Claude Code and Codex CLI is that Bash rules everything: if an agent can run Bash commands in an environment it can do almost anything that can be achieved by typing commands into a computer.
When Anthropic added their own code interpreter feature to Claude last September they built that around Bash rather than just Python. It looks to me like OpenAI have now done the same thing for ChatGPT.
Here’s what ChatGPT looks like when it runs a Bash command—here my prompt was:
It’s useful to click on the “Thinking” or “Thought for 32s” links as that opens the Activity sidebar with a detailed trace of what ChatGPT did to arrive at its answer. This helps guard against cheating—ChatGPT might claim to have run Bash in the main window but it can’t fake those black and white logs in the Activity panel.
I had it run Hello World in various languages later in that same session.
In the previous example ChatGPT installed the cowsay package from npm and used it to draw an ASCII-art cow. But how could it do that if the container can’t make outbound network requests?
In another session I challenged it to explore its environment. and figure out how that worked.
The key magic appears to be a applied-caas-gateway1.internal.api.openai.org proxy, available within the container and with various packaging tools configured to use it.
The following environment variables cause pip and uv to install packages from that proxy instead of directly from PyPI:
PIP_INDEX_URL=https://reader:****@packages.applied-caas-gateway1.internal.api.openai.org/…/pypi-public/simple
PIP_TRUSTED_HOST=packages.applied-caas-gateway1.internal.api.openai.org
UV_INDEX_URL=https://reader:****@packages.applied-caas-gateway1.internal.api.openai.org/…/pypi-public/simple
UV_INSECURE_HOST=https://packages.applied-caas-gateway1.internal.api.openai.org
This one appears to get npm to work:
NPM_CONFIG_REGISTRY=https://reader:****@packages.applied-caas-gateway1.internal.api.openai.org/…/npm-public
And it reported these suspicious looking variables as well:
CAAS_ARTIFACTORY_BASE_URL=packages.applied-caas-gateway1.internal.api.openai.org
CAAS_ARTIFACTORY_PYPI_REGISTRY=…/artifactory/api/pypi/pypi-public
CAAS_ARTIFACTORY_NPM_REGISTRY=…/artifactory/api/npm/npm-public
CAAS_ARTIFACTORY_GO_REGISTRY=…/artifactory/api/go/golang-main
CAAS_ARTIFACTORY_MAVEN_REGISTRY=…/artifactory/maven-public
CAAS_ARTIFACTORY_GRADLE_REGISTRY=…/artifactory/gradle-public
CAAS_ARTIFACTORY_CARGO_REGISTRY=…/artifactory/api/cargo/cargo-public/index
CAAS_ARTIFACTORY_DOCKER_REGISTRY=…/dockerhub-public
CAAS_ARTIFACTORY_READER_USERNAME=reader
CAAS_ARTIFACTORY_READER_PASSWORD=****
NETWORK=caas_packages_only
Neither Rust nor Docker are installed in the container environment, but maybe those registry references are a clue of features still to come.
The result of all of this? You can tell ChatGPT to use Python or Node.js packages as part of a conversation and it will be able to install them and apply them against files you upload or that it downloads from the public web. That’s really cool.
The big missing feature here should be the easiest to provide: we need official documentation! A release notes entry would be a good start, but there are a lot of subtle details to how this new stuff works, its limitations and what it can be used for.
As always, I’d also encourage OpenAI to come up with a name for this set of features that properly represents how it works and what it can do.
In the meantime, I’m going to call this ChatGPT Containers.
I decided to ask ChatGPT about other tools that were available to it in case there was anything interesting in there:
List all tools that are available to you, with their exact names and descriptions and signatures
...
Read the original on simonwillison.net »
To add this web app to your iOS home screen tap the share button and select "Add to the Home Screen".
10HN is also available as an iOS App
If you visit 10HN only rarely, check out the the best articles from the past week.
If you like 10HN please leave feedback and share
Visit pancik.com for more.