04-06 00:04 · AI,技术,HackerNews,AI
Show HN: TermHub – Open-source terminal control gateway built for AI Agents
termhub
is an AI-native terminal control tool.
It is designed for this closed loop:
- AI inspects what terminal sessions are open.
- AI opens a window or tab when needed.
- AI launches or targets a Codex session.
- AI sends the task into that session.
- AI captures only the new output produced after send and returns it to the user.
- Command:
termhub
- Alias:
thub
- npm package:
@duo121/termhub
- macOS backends:
iTerm2
,Terminal
- Windows backends:
Windows Terminal
,Command Prompt (CMD)
npm install -g @duo121/termhub
Or Homebrew (macOS):
brew tap duo121/termhub https://github.com/duo121/termhub
brew install duo121/termhub/termhub
Install from GitHub Releases (without npm):
termhub_<version>_macos-arm64.tar.gz
termhub_<version>_windows-x64.zip
After extraction:
- macOS
chmod +x termhub
./termhub --version
- Windows (PowerShell)
.\termhub.exe --version
termhub --help
termhub spec
termhub list
Use spec
as machine-readable truth and --help
as human-readable truth.
Both now include a currentSession
hint near the top that you can copy directly into --session
for AI handoff.
termhub
now ships an SDK preview entry:
import { createTermhubClient } from "@duo121/termhub/sdk";
Core SDK capabilities:
- Open/close terminal targets.
- Find/resolve terminal sessions.
- Send keyboard text and key events (
key
/combo
/sequence
). - Mouse click simulation on terminal target (
mouseClick
) on macOS.
Platform notes:
- macOS (
iTerm2
/Terminal
): keyboard + mouse click are supported. - Windows (
Windows Terminal
/CMD
): keyboard control is supported;mouseClick
currently returns unsupported.
SDK quick example:
import { createTermhubClient } from "@duo121/termhub/sdk";
const client = createTermhubClient({ app: "iterm2" });
const opened = await client.open({ scope: "tab" });
await client.send({ session: opened.target.handle, text: "echo hello from sdk" });
await client.press({ session: opened.target.handle, key: "enter" });
const output = await client.capture({ session: opened.target.handle, lines: 20 });
console.log(output.text);
- Always
resolve
(orfind
) to one exact target before mutating commands. - Use
--app
when multiple backends are active. - Use
--dry-run
before risky operations. - Use
send --no-enter
only when you plan a separate real key submit. - Never fake submit by appending literal newlines inside
--text
or stdin.
press
supports exactly one input mode:
--key <key>
--combo <combo>
(for examplectrl+c
,cmd+k
)--sequence <steps>
(for exampleesc,down*5,enter
)
Extra controls:
--repeat <n>
: only for--key
and--combo
--delay <ms>
: delay between repeated or sequenced key events
Examples:
termhub press --session <id|handle> --key enter
termhub press --session <id|handle> --combo ctrl+c
termhub press --session <id|handle> --sequence "esc,down*3,enter" --delay 60
Open a new iTerm2 window:
termhub open --app iterm2 --window
List all iTerm2 tabs:
termhub list --app iterm2
Close a specific tab by title:
termhub resolve --title Task1
termhub find --title Task1
termhub close --session <resolved-handle-or-session-id>
Read current Terminal tab (last 50 lines):
termhub resolve --app terminal --current-window --current-tab --current-session
termhub capture --app terminal --session terminal:session:<window-id>:<tab-index> --lines 50
Run command in Windows Terminal tab titled API
:
termhub resolve --app windows-terminal --title API
termhub send --app windows-terminal --session windows-terminal:session:<window-handle>:<tab-index> --text "npm test"
termhub
now supports a built-in session checkpoint loop so AI can capture only the new output produced after send
.
Basic flow:
termhub send --session <id|handle> --text "npm test" --await-output 1200
How it works:
send
stores a checkpoint for that exact session before writing input.send --await-output <ms>
waits and returns only delta output produced after that send.capture --since-last-send
remains available when you want a separate explicit read step.
Concurrency:
- Checkpoints are session-scoped, so two AI agents can use different sessions in parallel without conflict.
- State files are stored under
~/.termhub/state
by default.
--session
accepts native session id or namespaced handle.- Windows
focus/send/capture/close
rely on PowerShell + UI Automation. - Windows
capture
is best-effort based on visible text accessibility.
▸ 展开全文
04-06 00:01 · AI,技术,HackerNews,AI
From birds to brains: My path to the fusiform face area (2024)
From birds to brains: My twisted (and very lucky) path to the fusiform face area
As told by Nancy Kanwisher
Mine is not one of those inspiring stories of people who found their way to science against all odds. I grew up in Woods Hole, Massachusetts, where science was handed to me on a platter, from the Children's School of Science to the summer courses one could just walk into uninvited, to the library of the Marine Biology Labs which was open at all hours every day of the year, to the Friday Evening Lectures, the place to see and be seen in town.
My first publication, on the physiology of diving birds, was co-authored with my dad a field biologist at the Woods Hole Oceanographic Institution, and his then-student Geir Wing Gabrielsen, now of the Norwegian Polar Institute (Figure 1).
Adventures in Norway
In fact, an important part of my introduction to science took place in Norway. Long after my dad had pissed off pretty much all of his colleagues in the U.S., he still had scientific friends in Norway, and he travelled there regularly to collaborate with them. I first visited Norway when he brought our family on one of these trips. He bought an old Norwegian fishing boat in ill repair named the "Nordlys." I remember boarding the boat in Bergen harbor, where we feasted on smoked mackerel from the fish market and then headed down the coast on a voyage that was glorious, memorable and quite dangerous.
A few years later my dad was planning an expedition to study ptarmigans on the island of Karlsoy near Tromso with Geir and several other scientists. I wanted to join, but there was no funding to bring an unskilled 17-year-old along, and flights to Norway were expensive. So, I got a cheap flight to Amsterdam, where I bought a bicycle and made my way to Tromso by a combination of pedal-power and train, including a thrilling bike ride over the Dovrefjell from Oslo to Trondheim. On Karlsoy, we lived in an old farmhouse, and went tromping across the island under the midnight sun to run field experiments on nesting ptarmigans.
Working in Molly Potters lab
As an undergrad at Massachusetts Institute of Technology (MIT) majoring in biology, I struggled. Despite my privileged early exposure to science, I had not learned much in public high school and I was simply not prepared for MIT. I worked in a lab studying differentiation of blood cells, but I did not enjoy killing a mouse for each experiment. So, I sought refuge in a department where they did not kill their subjects: the (then) MIT Psychology Department. There I worked in the lab of Molly Potter, a towering intellect of cognitive psychology and also a warm, fun, and supportive mentor who fished me off the bottom of the wait list for grad school a year later. My dad was scandalized that I planned to study psychology, which in his mind had all the rigor of astrology.
But my dad was wrong. I learned from Molly how to make powerful inferences about the inner workings of the mind from humble behavioral data, which is a bit like trying to figure out how a car works just by driving it around. Still, in cognitive science, as in auto mechanics, there is no substitute for looking under the hood. During my first year in grad school, the first noninvasive brain imaging study of human visual cortex was published on the cover of Science magazine, showing a very blurry yellow blob at the back of the head when people looked at patterned visual stimuli compared to diffuse illumination.
I was blown away. I wrote a proposal to use this device to answer a suite of questions about the mind, and sent it to all the brain imaging labs in the world (there were four). Does mental imagery engage the same brain machinery as visual perception? Does attention modulate responses early in the visual processing pathway? Where in the brain do we match incoming visual information with stored descriptions of what familiar objects look like? I gave a draft of the proposal to Molly, and she was furious. In her mind I was "selling out" to neuroscientists who failed to understand the power of behavioral data in revealing the mechanisms of the mind. But she got over herself the next day and has supported my efforts to answer cognitive questions with brain data ever since.
"I got frustrated and dropped out of graduate school three times to pursue journalism instead".
The luck turned
Only one of the brain imaging labs wrote back, and soon thereafter the trail went cold. Meanwhile I ran behavioral experiments on sentence understanding and visual perception. The questions were exciting and the experimental logic appealing, but most of my experiments bombed. For years. I got frustrated and dropped out of graduate school three times to pursue journalism instead. I once spent a month in Nicaragua at the peak of the contra war hitchhiking around in army jeeps and interviewing Sandinista officials in my abysmal Spanish. Molly was ever patient, insisting that my experimental ideas were good and that I was just unlucky
▸ 展开全文
04-06 00:01 · AI,技术,HackerNews,AI
A tail-call interpreter in (nightly) Rust
A tail-call interpreter in (nightly) Rust
Last week, I wrote a tail-call interpreter using the become
keyword, which was
recently added to nightly Rust
(seven months ago is recent, right?).
It was a surprisingly pleasant experience, and the resulting VM outperforms both my previous Rust implementation and my hand-coded ARM64 assembly. Tailcall-based techniques have been all the rage recently (see this overview); consider this my trip report implementing a simple but non-trivial system.
For those keeping track at home, this is the latest in my exploration of high-performance emulation of the Uxn CPU, which runs a bunch of applications in the Hundred Rabbits ecosystem.
If you want to read the whole saga, here's the list:
- Project writeup for Raven, my original Rust implementation
- Beating the compiler, in which I write an ARM64 assembly implementation which outperforms my Rust code
- Guided by the beauty of our test suite, in which I revisit the code a year later and improve its testing and CI
- An x86-64 backend for
raven-uxn
, in which I port the assembly implementation from ARM64 to x86 (with the help of Claude Code)
Experimenting with LLMs proved controversial, which wasn't a surprise; I'm pleased to declare that all of the tail-call code is human-written, and the new backend can be used as a substitute for the x86 assembly backend at a minor performance penalty.
(This blog post is also entirely human-written, per my personal standards)
The next few sections summarize previous work, so feel free to skim them if you've done the reading and jump straight to tailcalls in Rust.
Basics of Uxn emulation
Uxn is a simple stack machine with 256 instructions. The whole CPU has just over 64K of space, split between a few memories:
- Two 256-byte stacks, each with an index byte
- 65536 bytes of RAM, which is used for both data and program text
- A 2-byte program counter
- 256 bytes of "device memory", used for peripherals
The simplest emulator reads a byte from RAM at the program counter, then calls into an instruction (which may update the program counter):
fn run(core: &mut Uxn, dev: &mut Device, mut pc: u16) -> u16 {
loop {
let op = core.next(&mut pc);
let Some(next) = core.op(op, dev, pc) else {
break pc;
};
pc = next;
}
}
impl Uxn {
fn op(
&mut self, op: u8, dev: &mut Device, pc: u16
) -> Option<u16> {
match op {
op::BRK => self.brk(pc),
op::INC => self.inc::<0b000>(pc),
op::POP => self.pop::<0b000>(pc),
op::NIP => self.nip::<0b000>(pc),
op::SWP => self.swp::<0b000>(pc),
// ... etc
op::ORA2kr => self.ora::<0b111>(pc),
op::EOR2kr => self.eor::<0b111>(pc),
op::SFT2kr => self.sft::<0b111>(pc),
}
}
}
There are 256 instructions, many of which are parameterized with flags. Here's
the INC
instruction, which increments the top byte on the stack:
impl Uxn {
pub fn inc<const FLAGS: u8>(&mut self, pc: u16) -> Option<u16> {
let mut s = self.stack_view::<FLAGS>();
let v = s.pop();
s.push(v.wrapping_add(1));
Some(pc)
}
}
All of the opcode implementations are inlined into the main op
function, but
there's room for improvement:
some values are stored in memory rather than registers, and the main op
selection branch is unpredictable.
Threaded code in assembly
In our assembly implementation, we can instead use threaded code (specifically token threading). We store all of the CPU state in registers, then end each instruction with a jump to the subsequent instruction:
; x0 | stack pointer
; x1 | stack index
; x4 | ram pointer
; x5 | program counter
; x8 | opcode table
_INC:
ldrb w9, [x0, x1] ; read the byte from the top of the stack
add w9, w9, #1 ; increment it
strb w9, [x0, x1] ; write it back
ldrb w9, [x4, x5] ; load the next opcode from RAM
add x5, x5, #1 ; increment the program counter
and x5, x5, #0xffff ; wrap the program counter
ldr x10, [x8, x9, lsl #3] ; load the opcode implementation address
br x10 ; jump to the opcode's implementation
This distributes the dispatch operation across every opcode, making it easier for the branch predictor to learn sequences of opcodes in the program. Overall speedups were significant: 40-50% faster on ARM64, and about 2× faster on x86-64.
Unfortunately, it requires maintaining about 2000 lines of code, and is incredibly unsafe. In my x86 port, I introduced an out-of-bounds write, which stomped on a few bytes outside of device RAM; the only symptom was that the fuzzer would segfault when exiting after running a very particular program.
So, what's to be done?
Tail calls in Rust
We'd like to get the same behavior as our assembly implementation – VM state stored in registers, dispatch at the end of each opcode – without hand-writing every instruction in assembly. Fortunately, there is hope!
The core idea has almost certainly been reinvented a bunch of times, but I first encountered the idea of tail-call interpreters in the Massey Meta Machine writeup, which was a mind-expanding read.
There are two pieces:
- Store program state in function arguments, which are mapped to registers based on you
▸ 展开全文
04-06 00:01 · AI,技术,HackerNews,AI
Eight years of wanting, three months of building with AI
For eight years, I’ve wanted a high-quality set of devtools for working with SQLite. Given how important SQLite is to the industry1, I’ve long been puzzled that no one has invested in building a really good developer experience for it2.
A couple of weeks ago, after ~250 hours of effort over three months3 on evenings, weekends, and vacation days, I finally released syntaqlite (GitHub), fulfilling this long-held wish. And I believe the main reason this happened was because of AI coding agents4.
Of course, there’s no shortage of posts claiming that AI one-shot their project or pushing back and declaring that AI is all slop. I’m going to take a very different approach and, instead, systematically break down my experience building syntaqlite with AI, both where it helped and where it was detrimental.
I’ll do this while contextualizing the project and my background so you can independently assess how generalizable this experience was. And whenever I make a claim, I’ll try to back it up with evidence from my project journal, coding transcripts, or commit history5.
Why I wanted it
In my work on Perfetto, I maintain a SQLite-based language for querying performance traces called PerfettoSQL. It’s basically the same as SQLite but with a few extensions to make the trace querying experience better. There are ~100K lines of PerfettoSQL internally in Google and it’s used by a wide range of teams.
Having a language which gets traction means your users also start expecting things like formatters, linters, and editor extensions. I’d hoped that we could adapt some SQLite tools from open source but the more I looked into it, the more disappointed I was. What I found either wasn’t reliable enough, fast enough6, or flexible enough to adapt to PerfettoSQL. There was clearly an opportunity to build something from scratch, but it was never the “most important thing we could work on”. We’ve been reluctantly making do with the tools out there but always wishing for better.
On the other hand, there was the option to do something in my spare time. I had built lots of open source projects in my teens7 but this had faded away during university when I felt that I just didn’t have the motivation anymore. Being a maintainer is much more than just “throwing the code out there” and seeing what happens. It’s triaging bugs, investigating crashes, writing documentation, building a community, and, most importantly, having a direction for the project.
But the itch of open source (specifically freedom to work on what I wanted while helping others) had never gone away. The SQLite devtools project was eternally in my mind as “something I’d like to work on”. But there was another reason why I kept putting it off: it sits at the intersection of being both hard and tedious.
What makes it hard and tedious
If I was going to invest my personal time working on this project, I didn’t want to build something that only helped Perfetto: I wanted to make it work for any SQLite user out there8. And this means parsing SQL exactly like SQLite.
The heart of any language-oriented devtool is the parser. This is responsible for turning the source code into a “parse tree” which acts as the central data structure anything else is built on top of. If your parser isn’t accurate, then your formatters and linters will inevitably inherit those inaccuracies; many of the tools I found suffered from having parsers which approximated the SQLite language rather than representing it precisely.
Unfortunately, unlike many other languages, SQLite has no formal specification describing how it should be parsed. It doesn’t expose a stable API for its parser either. In fact, quite uniquely, in its implementation it doesn’t even build a parse tree at all9! The only reasonable approach left in my opinion is to carefully extract the relevant parts of SQLite’s source code and adapt it to build the parser I wanted10.
This means getting into the weeds of SQLite source code, a fiendishly difficult codebase to understand. The whole project is written in C in an incredibly dense style; I’ve spent days just understanding the virtual table API11 and implementation. Trying to grasp the full parser stack was daunting.
There’s also the fact that there are >400 rules in SQLite which capture the full surface area of its language. I’d have to specify in each of these “grammar rules” how that part of the syntax maps to the matching node in the parse tree. It’s extremely repetitive work; each rule is similar to all the ones around it but also, by definition, different.
And it’s not just the rules but also coming up with and writing tests to make sure it’s correct, debugging if something is wrong, triaging and fixing the inevitable bugs people filed when I got something wrong…
For years, this was where the idea died. Too hard for a side project12, too tedious to sustain motivation, too risky to invest months into something that might not work.
How it happened
I’ve been using coding agents since early 2025 (A
▸ 展开全文
04-06 00:00 · 中东,局势,AlJazeera,中东
Spokesperson Abu Obeida says calling for the group’s disarmament amounts to an attempt to continue Israel’s genocide.
Hamas spokesman Abu Obeida has said that calling for the group’s disarmament amounted to an attempt to continue Israel’s genocide.
Hamas’s armed wing has rejected calls for the Palestinian group to disarm, saying that discussing the issue before Israel fully implements the first phase of the United States-brokered “ceasefire” in Israel’s war on Gaza amounts to an attempt to continue the genocide against the Palestinian people.
Recommended Stories
list of 4 items- list 1 of 4Details revealed of Board of Peace plan for Gaza disarmament
- list 2 of 4Living in the dark: Gaza’s struggle for electricity
- list 3 of 4Netanyahu orders military to expand invasion of southern Lebanon
- list 4 of 4Land Day in Gaza: Between memory and the fight for what remains
In a televised statement on Sunday, Obeida, who is Hamas’s armed wing spokesperson, said that raising the issue of weapons “in a crude manner” would not be accepted.
The issue of Hamas relinquishing its weapons is a major obstacle in talks to implement US President Donald Trump’s 20-point plan for Gaza, aimed at ending Israel’s war on the besieged territory.
Since the US- and Qatar-brokered “ceasefire” took effect in October, more than 705 Palestinians have been killed in Israeli attacks, according to the Palestinian news agency Wafa.
Hamas has told mediators it will not discuss disarmament without guarantees that Israel will completely withdraw from Gaza, three sources told the Reuters news agency last week.
“What the enemy is trying to push through today against the Palestinian resistance, via our brotherly mediators, is extremely dangerous,” Obeida said.
He said the disarmament demands were “nothing but an overt attempt to continue the genocide against our people, something we will not accept under any circumstances”.
It was not immediately clear whether the comments amounted to a formal rejection of the US-backed plan, which includes a demand that Hamas lay down its arms.
Israel’s genocidal war on Gaza, which began after the Hamas-led attacks on southern Israel in October 2023, has killed more than 72,000 Palestinians and injured at least 172,000 others.
Obeida urged mediators to pressure Israel to fulfil its commitments under the first phase of the Trump plan before any discussion of the second phase can take place.
“The enemy is the one who undermines the agreement,” he said.
There was no immediate comment from Israel on his remarks.
Obeida also addressed Israel’s role in the US-Israel war on Iran, condemning it for launching strikes on Iran “in the midst of the deception of negotiations, with full collusion and conspiracy with the United States”.
The US had been involved in talks with Iran over its nuclear programme in the weeks before the US and Israel launched the war on February 28.
In Iran, more than 2,000 people have been killed and at least 26,500 others injured since the war began.
Obeida also condemned Israel’s renewed offensive “against sisterly Lebanon”, which it launched on March 2 after the Lebanese armed group Hezbollah fired rockets into Israel.
Israel’s assault on Lebanon has killed more than 1,400 people and displaced over 1.2 million, according to Lebanese authorities.
Obeida commended Iran, Hezbollah and Yemen’s Houthis for their continued strikes against Israel.
Hamas’s spokesman also condemned the Israeli parliament’s passage of a new death penalty law that only applies to Palestinians, urging people in the West Bank “to seek, by every possible means, to liberate the [Palestinian] prisoners” held in Israeli jails.
▸ 展开全文
04-06 00:00 · 中东,局势,AlJazeera,中东
US president threatens to strike power plants and bridges on Tuesday in an expletive-laden social media post.
United States President Donald Trump has threatened to attack civilian infrastructure inside Iran, including bridges and power plants, if the Strait of Hormuz is not reopened by his stated deadline of Monday.
Trump made the threat in an expletive-laden social media post on Sunday, in which he repeated previous threats to pummel vital infrastructure across Iran.
Recommended Stories
list of 3 items- list 1 of 3Universities hit as US, Israel ramp up attacks on Iran’s infrastructure
- list 2 of 3Kuwait’s power, water plants damaged as Iran keeps attacking Gulf states
- list 3 of 3‘We got him!’: How the US rescued downed airman in Iran
“Tuesday will be Power Plant Day, and Bridge Day, all wrapped up in one, in Iran. There will be nothing like it!!! Open the F****** Strait, you crazy b*******, or you’ll be living in Hell – JUST WATCH! Praise be to Allah,” Trump said in a Truth Social post.
On March 26, Trump set a 10-day deadline for Iran to reopen the Strait of Hormuz, a key shipping route for the global energy market, where traffic has ground to a halt since the US and Israel first attacked Iran on February 28.
He told Fox News on Sunday that Iran was currently negotiating with the US and that he believed the two could reach a deal before the deadline.
Iranian officials have slammed Trump’s threats and promised to retaliate for any attacks on their infrastructure.
“Once again, the US president openly threatens to destroy infrastructure essential to civilian survival in Iran,” Iran’s mission to the United Nations said in response to Trump’s threats.
“The international community and all states have legal obligations to prevent such atrocious acts of war crimes. They must act now. Tomorrow is too late,” it added.
Seyyed Mehdi Tabatabaei, deputy for communications at the Iranian president’s office, also stated that the strait would only be reopened following the payment of reparations for damages caused by the war.
He said those payments would come in the form of transit fees through a “new legal regime” around the strait, consistent with previous Iranian statements that it may seek to translate its control over the strait into a system whereby ships passing through pay a fee even after the war ends.
Tabatabaei dismissed Trump’s threats as a sign that the US has “resorted to obscenities and nonsense out of sheer desperation and anger”.
The US president has frequently repeated that Iran is seeking a deal to end the war and that fighting will end soon since the conflict began. Iran has stated that it is not seeking to end the war and has vowed to step up escalation across the region if its infrastructure is targeted.
Throughout the war, US officials have threatened Iran with overwhelming violence if it does not capitulate to US demands. Last week, US Secretary of Defense Pete Hegseth threatened to send Iran “back to the Stone Age”.
US-Israeli strikes have already targeted civilian infrastructure and facilities, including bridges, schools, healthcare facilities, and universities. Experts have warned that some of those strikes could constitute war crimes.
Asked if he was concerned about the impact of targeting infrastructure such as bridges and power plants on Iran’s civilian population, Trump told the Wall Street Journal that he was not.
“No, they want us to do it,” he said during an interview, adding that Iranians are “living in hell”.
Trump also declined to offer a timeline for the end of the war, stating only that “I will let you know pretty soon”.
The US president has said that he will hold a news conference in the White House on Monday.
Trump also offered additional details about the operation to locate and extract the pilot of an F-15E fighter jet that was shot down over Iran on Friday.
“We have rescued the seriously wounded, and really brave, F-15 Crew Member/Officer, from deep inside the mountains of Iran,” he said in a separate social media post on Sunday.
“An AMAZING show of bravery and talent by all!”
▸ 展开全文
04-06 00:00 · 中东,局势,AlJazeera,中东
The second pilot from the fighter jet shot down in Iran is rescued by US rescue forces after 48 hours.
United States President Donald Trump said early on Sunday that an American soldier who went missing in Iran after the downing of his F-15E jet has been rescued following what observers called a dramatic firefight between Iranian and US rescue forces.
The US and Iran were racing to find the airman for about two days, with Tehran calling on the public to hand over the soldier to the authorities in what appeared to be attempts to capture an American prisoner of war as the US-Israel war on Iran entered its 37th day.
Recommended Stories
list of 3 items- list 1 of 3‘Miraculous’: US rescues second pilot downed in Iran, Trump confirms
- list 2 of 3Trump’s unpopular war on Iran
- list 3 of 3Iran war: What is happening on day 37 of US-Israeli attacks?
That scenario would have delivered a significant win to Tehran amid the ongoing pummelling of its territory, and for Washington, a stunning blow, analysts say. It could have been the moment that parts of Trump’s support base, which has so far supported the war, started to rethink their stance, they say.
“It was a major test for the American military because they really don’t want to leave any of their servicemen behind enemy lines,” Amin Saikal, a professor of Middle East and Central Asian studies at the Australian National University, told Al Jazeera.
But this rescue “also really frees up President Trump to pursue whatever strategy he has in mind”, Saikal added, referencing Trump’s 48-hour deadline for Iran to make a deal or open the Strait of Hormuz “before all Hell will reign down on them”. Trump has already threatened to bomb energy plants in Iran. Targeting of civilian infrastructure is seen as a violation of the laws of war.
At least 2,076 people have been killed, and 26,500 have been injured in Iran since February 28, when the US and Israel first launched strikes on Iran and killed Supreme Leader Ayatollah Khamenei and several other senior military and political leaders.
The conflict has since escalated into a regional war with Iran retaliating against Gulf countries hosting US military and commercial assets.
What happened to the missing airman?
The F-15E jet carrying two members was flying over southern Iran when it was shot down on Friday morning local time.
According to Tehran, the aircraft was shot down by Iran’s “new advanced air defence system”, which it said remained effective despite claims by the US that it had been destroyed.
It was the first time during the war, and the first time since the invasion of Iraq in 2003, that a US aircraft had been shot down.
Washington immediately launched a rescue mission. Although US forces rescued one crew member hours after the crash, the second pilot, believed to be a colonel-rank weapons system officer, was yet to be found.
At least one Black Hawk helicopter was hit in the initial rescue, but US officials said it managed to stay airborne.
On Sunday afternoon, Trump revealed that the military rescued the ‘seriously wounded’ airman from inside the mountains of Iran.
“This type of raid is seldom attempted because of the danger to ‘man and equipment’ It just doesn’t happen! The second raid came after the first one, where we rescued the pilot in broad daylight, also unusual, spending seven hours over Iran,” the US president said in a Truth Social post.
Earlier, Trump suggested that the US appeared to have the location of the airman and was tracking him as the rescue mission unfolded.
An A-10 Warthog aircraft was also hit near the Strait of Hormuz around the same time as the F-15E, but its pilot was able to eject before the plane crashed and was subsequently rescued. Iranian media reported that this aircraft was also hit by Iran’s defence system.
How did Iran react?
Following the downing of the F-15E, Iran’s Islamic Revolutionary Guard Corps (IRGC) cordoned off some parts of the mountainous southwestern Kohgiluyeh and Boyer-Ahmad province because they believed the airman went down in the vicinity.
Iranian media also reported that parts of the southern Khuzestan region, an important energy hub, were being scrutinised. That region was the focus of heavy US-Israeli strikes on Saturday that killed at least five people and injured dozens.
Iranian authorities, in a rare move, called on the public on Friday to help find and capture the missing American soldier. State media reported that Tehran offered a $60,000 reward for the airman as clips on state TV repeatedly played footage showing the remnants of the downed US aircraft.
Nomadic tribes in the area, appearing to heed the calls, set about searching for the US airman. Footage from state media showed men carrying rifles and Iranian flags moving in between the mountains of the country’s southwest region.
Some successfully shot at two US Black Hawks that were part of the rescue mission, Iranian officials said. The BBC also verified footage appearing to show Iranian men firing their rifles at US helicopters.
Nomadic groups in Iran, and elsewhere, usually carry rifles to protect the
▸ 展开全文
04-06 00:00 · 中东,局势,AlJazeera,中东
Since January, Iran’s near total internet blackout has impacted jobs and businesses.
Tehran, Iran – Iran’s state-imposed near-total internet shutdown is now the longest nationwide blackout on record in any country, according to a global monitor.
Connectivity to the global internet has been at around one percent of pre-war levels since shortly after the United States and Israel launched their war on Iran on February 28, according to NetBlocks.
Recommended Stories
list of 3 items- list 1 of 3“We blame Trump”: Drivers line up for free gas as prices surge in the US
- list 2 of 3Oman, Iran discuss smooth transit in Strait of Hormuz, Muscat says
- list 3 of 3Iran’s ex-FM Zarif proposes peace roadmap; Gulf points at erosion of trust
Another 20-day internet shutdown was imposed in January, when thousands were killed during nationwide protests, meaning that most Iranian civilians have now spent close to two-thirds of 2026 in digital darkness – with only a limited and at times slow intranet serving to offer some basic services and allow access to state-run news and messaging services.
“Iran is the first country to have had internet connectivity and then subsequently lost it by reverting to a national network,” NetBlocks said on Sunday.
It added that while Myanmar, Sudan, Kashmir and Tigray have had incidents of longer intermittent blackouts, none has experienced a state-imposed shutdown at this scale for this long.
No wars, including those in Ukraine and Gaza, have been known to “have sent an entire country offline” like Iran, the monitor said.
During the January shutdown, the government said that many online businesses could not survive more than three weeks of being disconnected, and that the beleaguered economy was haemorrhaging tens of millions of dollars in direct damages each day, not to mention the untold indirect and cumulative effects of a nationwide blackout.
More than five weeks into the war, the government has not explained how it expects the remnants of the country’s battered digital sector and its globally isolated economy to get through the coming months and years, even if a highly unlikely diplomatic breakthrough stops the war soon.
“There was a wave of layoffs in January, which I survived, but I didn’t survive this latest wave,” said Kamran, a product designer at a technology firm in Karaj near Tehran, who was told he was let go on Saturday, the first day of the working week after the Nowruz holidays.
He told Al Jazeera that he has found a local group where people say what skills they have and others help match them with any job opportunities, but said he was extremely concerned about the prospects of finding gainful employment in the foreseeable future due to the large number of other people looking.
A senior data analyst at a Tehran-based firm who asked to remain anonymous said that his company agreed to offer lower pay raises than expected for the new Persian year, so it would not be forced to downsize any employees for now.
“But the bosses are only doing three-month contracts, so there’s a prevailing sense that many people will have to go after that time is up,” he told Al Jazeera.
The devastating bombing of Iran’s top steel factories, petrochemical firms and other civilian infrastructure is also expected to exacerbate economic conditions that were already defined by rampant inflation and high unemployment long before the war.
Worried about internet and electricity
The minority of Iranians from inside the country who are connected to the internet are either directly permitted – or whitelisted – by the state, or have paid exorbitant amounts to purchase proxy connections that at times last for hours before being taken down by the authorities.
As government spokeswoman Fatemeh Mohajerani put it last month, the government is only allowing those who can “get the voice out” to have internet. That has included top officials, state-affiliated figures and entities, and news agencies.
Some of the whitelisted, and even some of the disconnected state supporters, write on X or the comment sections of local news sites working with the intranet that they are happy to accommodate the situation, which they deem to be a necessity for times of war.
Left in the dark with a highly uncertain future, many do not share the same sentiment.
Another Tehran resident told Al Jazeera that she and several friends had a get-together at home last night to share updates gleaned from brief periods of connectivity, state television, foreign-based satellite television networks, and endless phone calls and text messages while state supporters congregate in mosques and city squares.
“Some of us were laid off; all of us were worried about whether we will have electricity later this week, let alone what could happen in another month,” she said. “Artemis II has a live feed from the moon, but we can’t access Google search or AI, and have to think about what to do when the water pumps stop working when the power goes out.”
After the United States bombed a newly built bridge west of Tehran, US President Donald Trump vowed t
▸ 展开全文
04-06 00:00 · 中东,局势,AlJazeera,中东
Zarif’s plan calls for limits on Iran’s nuclear programme and reopening Strait of Hormuz in return for end to sanctions.
Former Iranian Foreign Minister Mohammad Javad Zarif has proposed a roadmap for ending the United States-Israeli war on Iran as tensions escalate across the Middle East.
Zarif’s plan was published by Foreign Affairs magazine on Friday and goes “beyond a temporary ceasefire”.
Recommended Stories
list of 4 items- list 1 of 4Omani, French and Japanese vessels transit the Strait of Hormuz
- list 2 of 4At least one killed at UAE’s Habshan gas facility after intercepted attack
- list 3 of 4‘We got him!’: How the US rescued downed airman in Iran
- list 4 of 4Kuwait’s power, water plants damaged as Iran keeps attacking Gulf states
The war, which erupted on February 28 with US-Israeli strikes on Iran, has spread across the Middle East and convulsed the global economy as Tehran attacked its neighbours, claiming to be targeting US assets there and restricting movement of vessels in the Strait of Hormuz.
Regional hostilities showed no signs of abating on Sunday, a day after US President Donald Trump said Iran had 48 hours to cut a deal or face “all hell”.
Against this backdrop, Zarif’s roadmap said that although Iran viewed itself as successful in the war, prolonging the conflict – while potentially “psychologically satisfying” for Tehran – would only result in further loss of civilian lives and destruction of infrastructure.
Iran should, therefore, offer to “place limits on its nuclear program” under international monitoring as well as “reopen the Strait of Hormuz in exchange for an end to all sanctions”, Zarif wrote.
Since the war began, Iran has virtually blocked the key waterway, through which one-fifth of the world’s crude oil and natural gas supplies normally pass.
Nuclear limits on Iran would include a commitment to never seek nuclear weapons and to blend its entire stockpile of enriched uranium so its enrichment levels fall below 3.67 percent, Zarif said.
According to the International Atomic Energy Agency (IAEA) estimates, Iran is believed to have about 440kg (970lb) of uranium enriched to 60 percent, a level at which uranium can be quickly enriched to the 90 percent threshold needed to produce a nuclear weapon.
Zarif called Trump’s demand for zero enrichment “fanciful” thinking.
Iran should also “accept a mutual nonaggression pact with the United States” in which both countries pledge to not strike each other in the future, the former minister said.
The US should also end all sanctions and United Nations Security Council resolutions against Iran, he added.
Regional consortium
Zarif also outlined potential roles for regional and international actors.
He suggested that China and Russia along with the US could help create a regional fuel-enrichment consortium with Iran and its Gulf neighbours at West Asia’s sole enrichment facility with Iran transferring all enriched material and equipment there.
Zarif additionally proposed that Gulf states, UN Security Council powers and possibly Egypt, Pakistan and Turkiye should form a regional security framework to “ensure nonaggression, cooperation and freedom of navigation”, including arrangements to guarantee safe passage through the Strait of Hormuz.
“To further consolidate peace, Iran and the United States should initiate mutually beneficial trade, economic and technological cooperation,” Zarif added.
The Iranian politician said this roadmap would benefit Trump, offering him a “well-timed off-ramp” and an opportunity to claim peace.
“Emotions may be high, and each side is boasting about its war-front victories. But history best remembers those who make peace,” he said.
The US has presented Iran with a 15-point plan for a ceasefire as Pakistan, Turkiye and Egypt have been trying to achieve direct talks, but there has been no signs of progress on the diplomatic front.
What about the Gulf?
Officials from Gulf states have responded to Zarif’s proposal, criticising it for overlooking Tehran’s attacks against its neighbours.
“Reading M. Javad Zarif’s article in Foreign Affairs ignores one of the core flaws in Iran’s strategy: aggression against its Gulf Arab neighbors,” Anwar Gargash, the diplomatic adviser to the president of the United Arab Emirates, said on X on Saturday.
“Thousands of missiles & drones targeting infrastructure, civilians, even mediators, is not strength; it is hubris & strategic failure. The Arab world has seen this before: destruction peddled as victory,” he added.
Former Qatari Prime Minister Hamad bin Jassim Al Thani also responded to Zarif’s plan, writing on X on Sunday that he “agreed with much of it” and it took a “clever” approach.
Still, he pushed back, stating that the war has “led us all into a path that is more complicated and dangerous” and chiding Iran for its attacks on the Gulf.
“You may believe that you have achieved progress in some aspects, and perhaps temporary tactical gains, but the cost was clear: the loss of an important part of your friends in the region, and the erosion of the trust that was built over years,” he wrote.
“Today, we
▸ 展开全文
04-06 00:00 · 中东,局势,AlJazeera,中东
The US and Israel have repeatedly hit the plant, raising risks of radioactive contamination far beyond Iran’s borders.
Iran’s only functioning nuclear plant, the Bushehr power plant, has come under repeated attacks in the ongoing Israel and US war on Iran, raising fears of a possible nuclear incident that could prove “catastrophic” across all Gulf countries.
The latest attack on the plant came on Saturday, after missiles hit a location close to the plant, killing one security guard and causing damage to a side building, according to the state-run Atomic Energy Organisation of Iran (AEOI).
Recommended Stories
list of 4 items- list 1 of 4Trump seeks to end the war without it becoming ‘an abject failure’
- list 2 of 4Photos: Thousands rally in Iraq against ‘senseless’ US-Israel war on Iran
- list 3 of 4Kuwait’s power, water plants damaged as Iran keeps attacking Gulf states
- list 4 of 4‘We got him!’: How the US rescued downed airman in Iran
In a statement criticising the attack, Iran’s Foreign Minister Abbas Araghchi claimed the Bushehr facility had now been “bombed” four times since the war erupted on February 28. He criticised what he said was a “lack of concern” for nuclear safety on the part of the United States and Israel.
Nuclear experts and regional authorities have long sounded the alarm over the incredible damage that bombing Bushehr would do, not just to Iran and Iranians, but to neighbouring countries as well.
Here’s what to know about the Bushehr plant and why its safety is paramount:
What is the Bushehr plant?
The Russia-built Bushehr plant is a nuclear power plant located in the coastal city of Bushehr, which has a population of 250,000.
Work on it initially started in 1975 by German companies, but it was eventually finished in 2011 by Russia’s atomic energy ministry. To date, hundreds of Russian personnel are stationed in Bushehr, with some having been evacuated following recent strikes.
It’s the first nuclear power plant in the Middle East, with one operational reactor. Bushehr Unit 1 currently provides about 1,000MW to the national grid. Two additional reactor units are expected to be operational by 2029.
What would happen if Bushehr were attacked?
Iranian officials say Bushehr has now been attacked four times in the course of the US-Israel war on Iran.
That’s separate from an initial strike on February 28, when the US and Israel first launched attacks, sparking off the war. Strikes hit Bushehr city, a few hundred metres from the plant.
A strike on a nuclear reactor or storage pools for used fuel would cause the release of radiological particles, specifically the hazardous isotope Caesium-137, into the atmosphere.
These can be spread far beyond the release point by wind and water and can contaminate food, soil, or drinking water sources for decades. Close exposure to such material would burn the skin and increase cancer risks.
What has the UN nuclear watchdog said about strikes targeting Bushehr?
The International Atomic Energy Agency (IAEA), the United Nations’ atomic watchdog, has been warning against targeting the plant for months.
During Israel’s 12-day war on Iran last year, IAEA Director-General Rafael Grossi told the UN Security Council that an Israeli strike on the Bushehr power plant could trigger a regional catastrophe.
Directly hitting the plant, which tonnes of nuclear material, could “result in a very high release of radioactivity”, with “great consequences” beyond Iran’s borders, Grossi warned, calling for “maximum restraint”.
A strike on the lines supplying electricity to Bushehr, which keep the cooling system operating, could cause a reactor meltdown and trigger a radioactive leak, he said. Evacuation orders would have to be issued within several hundred kilometres of the plant, extending to countries outside Iran.
He said authorities would also have to administer iodine to those within the area and potentially restrict food supplies due to possible radioactive contamination. Areas beyond the immediate danger zones would then have to be monitored as well for hundreds of kilometres.
Grossi, in the wake of the latest attack on Saturday, reiterated calls for restraint.
What are the risks of water contamination for the Gulf?
There are also fears that damage at Bushehr could contaminate the waters of the entire Gulf region. Radioactive contamination would affect marine life in the area, and the Gulf’s shallowness could see the negative effects remain over a long period, research finds.
It would also affect drinking water supplies. Most Gulf countries lack groundwater and rely heavily on desalination of seawater. But desalination plants are not inherently built to filter radioactive material, and not all plants at the moment have the technologies required.
Alan Eyre of the Middle East Institute told Al Jazeera that academic research has shown that the concentration of radioactive material at Bushehr might not be enough to cause Chornobyl-level disasters, referencing the 1986 tragedy in then-Soviet Ukraine.
But “more serious is the threat of radioactive material in the water because once you get an a
▸ 展开全文