On a day that marks the 31st anniversary of the Iranian revolution, massive crowds marched in most Iranian cities in both celebration and protest.
The security forces - some believe numbering in the millions when you include the army, the Rev Guards, the Basij, and other government-backed militias - are everywhere, dispersing crowds before they can form and generally being brutish about it.
Matthew Weaver of the Guardian is liveblogging via tweets and emails he is getting:
12.31pm:Meanwhile, you may recall Iran's president Ahmadinejad promised earlier in the week that there would be a "surprise" today coming from Iran. Well, it's not the arrival of the 12th Imam. Apparently, it isn't really news at all; Ahmadinejad announced that Iran is now a "nuclear state:"
The movements of opposition leaders Mir Hossein Mousavi are always hard to pin down on these protest days.
The opposition website, Iran's Green Voice, claimed he attended one of the rallies. "Eyewitnesses said that Mousavi appeared at the rally amongst ordinary citizens in a manner that made it difficult to tell him apart," it said. It gave no further details.
There also images circulating of Rafsanjani attending the official rally.
Protesters have been filmed throwing stones and shouting abuse at the security forces in the video below. There also appears to be the sound of gunfire. We think the film was taken outside Evin prison in north Tehran, if you have more information please let us know (see 8am for contact details).
The opposition movement has been trying to organise rallies in the main square in central Tehran at 4pm (12.30pm GMT), according to the opposition website Rahesabz.
It also reports that at least 100 protesters were arrested in the eastern city of Mashhad, and that another 20 were detained in the southern city of Shiraz in Fars province.
The scale of the crackdown is becoming clear. The security forces were lining up next to each other in rows eight men deep along the routes of the official rally, according to a photograph published by the opposition website rahesabz. This video also shows scores of police in riot gear.
Blogger homylafyette has been listening in to the callers to US-based ePersian Radio and translating what they say. One caller said listen to this and held her phone up to loud chants of "with God's help, victory is near. Death to this deceitful government."
Other callers have urged Iranians abroad to sabotage the Intelligence Ministry's hotline for informing on protesters.
Ahmadinejad reiterated to hundreds of thousands of cheering Iranians on the anniversary of the 1979 foundation of the Islamic republic that the country was now a "nuclear state," an announcement he's made before. He insisted that Iran had no intention of building nuclear weapons.
It was not clear how much enriched material had actually been produced just two days after the process was announced to have started.
The United States and some of its allies accuse Tehran of using its civilian nuclear program as a cover to build nuclear weapons but Tehran denies the charge, saying the program is just geared toward generating electricity.
"I want to announce with a loud voice here that the first package of 20 percent fuel was produced and provided to the scientists," he said.
Enriching uranium produces fuel for a nuclear power plants but can also be used to create material for atomic weapons if enriched further to 90 percent or more.
"We have the capability to enrich uranium more than 20 percent or 80 percent but we don't enrich (to this level) because we don't need it," he said in a speech broadcast live on state television.
Iran announced Tuesday it was beginning the process of enriching its uranium stockpile to a higher level. The international community reacted by discussing the imposition of new U.N. sanctions.
Right on cue, the UN is considering slapping more ineffective sanctions on the mullahs:
Senior United Nations officials told Haaretz that a Security Council resolution tightening the sanctions on Iran has become more likely, and that the resolution is probably going to be approved.
Observers in both New York and Washington estimate that China will think twice about using its veto on a resolution after Russia recently threw its support behind a move against Iran. A veto could expose Beijing as isolated and out of touch with its fellow Security Council members.
China could also abstain from voting and allow the decision to be made by a simple majority. However, the sources told Haaretz, the United States is still trying to obtain Chinese support for the sanctions.
Ahead of its push for international sanctions at the UN, the U.S. sought on Wednesday to ratchet up pressure on Iran by imposing its own sanctions on elements of Iran's Revolutionary Guard Corps, which Western intelligence officials believe is spearheading Iran's nuclear program.
The Treasury Department said it was freezing the assets in U.S. jurisdictions of Revolutionary Guard Gen. Rostam Qasemi and four subsidiaries of a previously penalized construction firm he runs because of their alleged involvement in producing and spreading weapons of mass destruction.
U.S. officials said the measures were intended as a model for wider action at the UN.
The authorities have clamped down on email service, banning Google and disrupting the net in general. Some bloggers are still trying to get the word out but they too, are being blocked in many cases.
The day is not yet over in Iran but it looks like the kind of massive protests the opposition was looking for were prevented from forming thanks to a well planned crackdown by the government. But there will be other days, other protests where the government won't have weeks to prepare.