Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 86 additions & 0 deletions src/lib/components/CampaignCard.svelte
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
<script lang="ts">
import type { Campaign } from '$lib/types'

export let campaign: Campaign

const { title, description, image, url } = campaign
</script>

<a href={url} class="card">

Check warning on line 9 in src/lib/components/CampaignCard.svelte

View workflow job for this annotation

GitHub Actions / pnpm-check

Use $lib/components/custom/a.svelte instead
<img src={image} alt={title} />
<div class="card-content">
<h2>{title}</h2>
<p>{description}</p>
<div class="cta-button">Visit Campaign</div>
</div>
</a>

<style>
.card {
background-color: var(--bg-secondary);
border-radius: 16px;
box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);
transition:
transform 0.1s ease-in-out,
outline-color 0.1s ease-in-out;
display: flex;
flex-direction: column;
height: 100%;
max-width: 400px;
margin: 0 auto;
text-decoration: none;
outline: 2px solid transparent;
}

.card:hover {
outline-color: var(--brand);
}

img {
width: 100%;
height: 220px;
object-fit: cover;
border-top-left-radius: 16px;
border-top-right-radius: 16px;
}

.card-content {
padding: 2rem;
display: flex;
flex-direction: column;
flex-grow: 1;
}

h2 {
font-family: var(--font-heading);
/*font-size: 1.8rem;*/
margin: 0 0 1rem 0;
color: var(--text);
}

p {
font-family: var(--font-body);
/*font-size: 1.1rem;*/
/*line-height: 1.6;*/
margin: 0 0 2rem 0;
color: var(--text-subtle);
flex-grow: 1;
}

.cta-button {
display: inline-block;
background-color: var(--brand);
color: var(--bg);
padding: 1rem 2rem;
border-radius: 8px;
text-decoration: none;
font-weight: bold;
transition: background-color 0.2s;
text-align: center;
font-size: 1.1rem;
}

.cta-button:hover {
background-color: var(--brand-dark);
}
</style>
23 changes: 23 additions & 0 deletions src/lib/components/CampaignsCarousel.svelte
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<script lang="ts">
import CampaignCard from './CampaignCard.svelte'
import { campaigns } from '$lib/data/campaigns'
let filteredCampaigns = campaigns.filter((campaign) => campaign.isCurrent)
</script>

<h2>Our current campaigns</h2>
<div class="campaigns-grid">
{#each filteredCampaigns as campaign}
<CampaignCard {campaign} />
{/each}
</div>

<style>
h2 {
text-transform: uppercase;
}
.campaigns-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 2rem;
}
</style>
3 changes: 3 additions & 0 deletions src/lib/components/Home.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import QuotesCarousel from '$lib/components/QuotesCarousel.svelte'
import Stats from '$lib/components/Stats.svelte'
import * as m from '$lib/paraglide/messages.js'
import CampaignsCarousel from '$lib/components/CampaignsCarousel.svelte'

const title = 'We need to Pause AI'
const description = 'We are risking human extinction. We need to pause AI development, right now.'
Expand Down Expand Up @@ -46,6 +47,8 @@
</Block>
</section>

<CampaignsCarousel />

<style>
.divider {
content: '';
Expand Down
36 changes: 36 additions & 0 deletions src/lib/data/campaigns.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import type { Campaign } from '$lib/types'

export const campaigns: Campaign[] = [
{
title: 'If anyone builds it, everyone dies',
description:
"Eliezer's new book deserves some promotion. We're helping out with the promotion.",
image: 'https://dummyimage.com/400x200/ccc/000.png&text=Campaign+1',
url: '/if-anyone-builds-it-everyone-dies',
isCurrent: true
},
{
title: 'DeepMind: keep your promises',
description:
'Google DeepMind have violated the promises they made to the UK government. They need to be held accountable.',
image: 'https://dummyimage.com/400x200/ccc/000.png&text=Campaign+2',
url: '/deepmind-promises-campaign',
isCurrent: true
},
{
title: "OpenAI's Potential Breach of Bioweapons Laws",
description:
"ChatGPT agent may have violated Australia's bioweapons laws, so we filed a report with the Australia Federal Police.",
image: 'https://dummyimage.com/400x200/ccc/000.png&text=Campaign+3',
url: '/openai-breach-bioweapons',
isCurrent: false
},
{
title: 'SB 53',
description:
'This bill is among the most ambitious AI safety bills in the US, but it might not go into effect till 2030.',
image: 'https://dummyimage.com/400x200/ccc/000.png&text=Campaign+4',
url: '/sb-53',
isCurrent: false
}
]
8 changes: 8 additions & 0 deletions src/lib/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,14 @@ export type Post = FrontmatterMeta & {
slug: string
}

export type Campaign = {
title: string
description: string
image?: string
isCurrent: boolean
url: string
}

export type Signatory = {
name: string
private: boolean
Expand Down
6 changes: 6 additions & 0 deletions src/posts/action.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,12 @@ title: Take action
description: Ways to help reduce AI risk.
---

<script>
import CampaignsCarousel from '$lib/components/CampaignsCarousel.svelte'
</script>

<CampaignsCarousel />

AI won't get safer unless we act decisively to push for safety.
Choose an activity below depending on your interests or skills.

Expand Down
38 changes: 38 additions & 0 deletions src/posts/deepmind-promises-campaign.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
---
title: Google DeepMind's Broken Promises
description: Google DeepMind have violated the promises they made to the UK government by signing on to the Frontier AI Safety Commitments in 2024. We held the biggest AI safety protest of all time outside their London offices, and will be releasing an open letter with sitting politicians to demand Google stick to their promises.
---

[_See all campaigns_](/campaigns)

Google DeepMind have violated the promises they made to the UK government by signing on to the Frontier AI Safety Commitments in 2024. We held the biggest AI safety protest of all time outside their London offices, and will be releasing an open letter with sitting politicians to demand Google stick to their promises.

The Frontier AI Safety Commitments were signed by most major AI companies. Amongst other commitments, signatories committed to "assess the risks posed by their frontier models [...] before deploying that model", to consider results from external safety tests, and to "explain how, if at all, external actors, such as governments [...] are involved in the process of assessing the risks of their AI models."

With their release of Gemini 2.5 Pro in March 2025, they failed to publish any safety report, and only released one three weeks later. However, at no point have Google given any details about which external bodies have been involved in risk assessment, or how they've been involved.

Read the full details about Google's violation of the Frontier AI Safety Commitments [here](/google-deepmind-broken-promises).

In response, PauseAI has taken the following actions:

- [Held the largest AI safety protest of all time](/deepmind-protest-2025) outside Google DeepMind's London offices.
- Dozens of sitting UK politicians have signed our open letter calling on Google to establish clear definitions of "deployment", publish specific timelines for the publication of safety reports, and to clarify unambiguously which third parties are involved in testing their models.

## How you can help

- Email your MP to get their name added to our open letter. You can use our tool [here](/uk-email-mp).
- Share the campaign on social media:
- Our [interview ](https://www.youtube.com/watch?v=5gnVzEoVDmk)with PauseAI UK Director Joseph Miller.
- [Videos](https://www.youtube.com/watch?v=AaowO0rLvao) of our DeepMind protest.
- Articles covering our protest (see below)

## Media coverage

- [Business Insider](https://www.businessinsider.com/protesters-accuse-google-deepmind-breaking-promises-ai-safety-2025-6)
- [Times of India](https://timesofindia.indiatimes.com/technology/tech-news/google-you-broke-your-word-on-shout-protestors-outside-google-deepminds-london-headquarters/articleshow/122203297.cms)
- [Tech Times](https://www.techtimes.com/articles/311120/20250701/google-deepmind-slammed-protesters-over-broken-ai-safety-promise.htm)
- [Islington Tribune](https://www.islingtontribune.co.uk/article/stark-warning-from-protesters-calling-for-ai-pause-its-going-to-turn-out-bad)

## Contact

Reach out to [Joseph Miller](mailto:[email protected]).
17 changes: 17 additions & 0 deletions src/posts/if-anyone-builds-it-everyone-dies.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
title: If Anyone Builds It, Everyone Dies - PauseAI Campaign
description: PauseAI will be hosting book readings across 10+ cities around the world, and turning the public's concern into action.
---

[_See all campaigns_](/campaigns)

Eliezer Yudkowsky's and Nate Soares' [book](https://ifanyonebuildsit.com/) is set to kick off a renewed public discussion on the extinction threat posed by AI.
PauseAI will be hosting book readings across 10+ cities around the world, and turning the public's concern into action.

- [London, Sept 22](https://lu.ma/ho3xb7xf)
- [Canberra, Oct 7th](https://lu.ma/tw6clgd4)
- [NYC, Oct 11th](https://lu.ma/asa28ws0)

Subscribe at https://lu.ma/pauseai for other events!

Reach out to [[email protected]](mailto:[email protected]) if you want to help us organize an event in your city.
13 changes: 13 additions & 0 deletions src/posts/openai-breach-bioweapons.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
title: "OpenAI's Potential Breach of Bioweapons Laws"
---

_[See all campaigns](/campaigns)_

OpenAI's release of ChatGPT agent may have violated Australia's bioweapons laws, as their own safety testing classified the model as having "high" biological and chemical capabilities. As these capabilities could aid novices in the creation of bioweapons, we filed a report with the Australia Federal Police on the matter.

Watch our interview with PauseAI Australia volunteer David Gould [_here_](https://youtu.be/-YPhNdpA8Rk?si=TQWma6IKIozBkMyq).

## Media coverage

- [_Information Age_](https://ia.acs.org.au/article/2025/is-the-new-chatgpt-agent-really-a-weapons-risk-.html)
6 changes: 3 additions & 3 deletions src/posts/organization.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ description: How the PauseAI organization is structured, and what resources are

- [Legal entities](/legal): PauseAI consists of one international entity (PauseAI Global), and several local / national legal entities. This website and the social media accounts are managed by the international entity.
- [National groups](/national-groups): National PauseAI groups are hubs that typically manage their own local communities, and are responsible for national-level strategy and coordination. They typically have their own website, social media accounts and legal entity. National leaders meet regularly to coordinate their work.
- [Teams](/teams): Teams are groups of volunteers who work on specific projects or tasks within PauseAI Global. Every team has its own leader, Discord channel, Drive folder and of course list of members. Reach out to a team leader to join a team!
- [Campaigns](/campaigns): Campaigns are temporary initiatives to achieve a specific goal. Each campaign has its own leader, Discord channel, and possibly even sub-brand.
- [Teams](/teams): Teams are groups of volunteers who work on specific projects, campaigns or tasks within PauseAI Global. Every team has its own leader, Discord channel, Drive folder and of course list of members. Reach out to a team leader to join a team!
- [Local communities](/communities): Check if there already exists a community in your area. Most groups are communicating in our discord server, in the `#local-meetups` channel (If you want to create a new local group, post there!). Some groups are using tools like WhatsApp or a separate Discord server.

![Organagram](/org.png)
Expand All @@ -20,8 +21,7 @@ description: How the PauseAI organization is structured, and what resources are

## Onboarding process

1. Sign up as a _volunteer_ (on the [join page](/join) or on Discord). An automated message is sent to the Onboarding team.
1. Someone from the onboarding team reaches out to the volunteer and invites them for a one-on-one call. They are asked to take actions in an existing local group, set up a local group, or join one of the teams.
Sign up as a _volunteer_ (on the [join page](/join) or on Discord). An automated message is sent to the National Group lead, who will initiate the onboarding process.

## Educational resources

Expand Down
28 changes: 28 additions & 0 deletions src/posts/sb-53.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
---
title: SB 53
description: A list of upcoming and past protests.
---

**Californians: we need YOUR help to pass (and improve) crucial AI safety legislation!**

SB 53 is among the most ambitious AI safety bills in the country. If passed, the [bill](https://legiscan.com/CA/text/SB53/2025) would:

- Require frontier AI companies to implement and publish safety protocols that include assessment and testing of catastrophic risks;
- Establish third-party audits of frontier AI companies to verify compliance with these safety protocols;
- Protect whistleblowers at AI companies, ensuring they are free to speak out about critical AI risks.


However, the bill has a flaw. Its provision establishing third-party audits **wouldn’t take effect until 2030**. Five years from now is too late!

The bill is currently in the Assembly Appropriations Committee, where it’s expected to remain until this Friday. If it passes through the committee, it will head to the Assembly floor for a full vote.


**We have a window of opportunity** to 1) make sure the bill passes the committee, and 2) to amend it to take effect as soon as possible (not in 2030!)


## **Here’s what you can do to help, before Friday August 29th:**

- **Call and email Appropriations Committee members** and ask them to advance SB 53 to a full floor vote. (https://mstr.app/157e6713-7bb5-409c-be57-6ad010afb282)
- **Call and email Senator Scott Wiener’s office** in support of an amendment. Senator Wiener is the bill’s lead author and an outspoken AI safety advocate. You should voice your support for the bill, and ask Senator Wiener to introduce an amendment that sets implementation no later than 2026. (https://mstr.app/c6818319-a007-4123-8231-551f012cc62a)


Additionally, please **share our action alert** with anyone you know in California and ask them to take action: https://mailchi.mp/d91a7546f38d/urgent-humanity-needs-your-help-to-get-sb-53-over-the-line?e=df9565ea26

Thank you so much for your support!
50 changes: 50 additions & 0 deletions src/routes/campaigns/+page.svelte
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
<script lang="ts">
import PostMeta from '$lib/components/PostMeta.svelte'
import { meta } from './meta'
import CampaignCard from '$lib/components/CampaignCard.svelte'
import { campaigns } from '$lib/data/campaigns'

export let data

const { title, description, date } = meta
let currentCampaigns = campaigns.filter((campaign) => campaign.isCurrent)
let pastCampaigns = campaigns.filter((campaign) => !campaign.isCurrent)
</script>

<PostMeta {title} {description} {date} />

<h1>{title}</h1>

<section>
<h2>Current Campaigns</h2>
{#if currentCampaigns.length === 0}
<p>No current campaigns found</p>
{/if}
<ul class="campaigns-grid">
{#each currentCampaigns as campaign}
<CampaignCard {campaign} />
{/each}
</ul>
</section>

<h2>Past Campaigns</h2>
{#if pastCampaigns.length === 0}
<p>No past campaigns found</p>
{/if}
<ul class="campaigns-grid">
{#each pastCampaigns as campaign}
<CampaignCard {campaign} />
{/each}
</ul>

<h2>Start a campaign?</h2>
<p>Pitch your idea on our Discord server, or <a href="mailto:[email protected]">email us</a>.</p>

<style>
.campaigns-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 2rem;
margin-bottom: 2rem;
}
</style>
9 changes: 9 additions & 0 deletions src/routes/campaigns/meta.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import type { Post } from '$lib/types'

export const meta: Post = {
title: 'PauseAI Campaigns',
description: 'Currently running campaigns organized by PauseAI',
date: '2025-10-27',
slug: 'campaigns',
categories: []
}
3 changes: 2 additions & 1 deletion src/styles/styles.css
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ html {
--text: white;
--bg: black;
--bg-subtle: hsl(32, 100%, 20%);
--text-subtle: hsl(32, 0%, 15%);
--text-subtle: hsl(0, 0%, 70%);
--bg-secondary: hsl(0, 0%, 10%);
}

Expand All @@ -66,6 +66,7 @@ html {
--brand: var(--brand-light);
--brand-subtle: hsl(32, 100%, 35%);
--text: black;
--text-subtle: hsl(0, 0%, 40%);
--bg-secondary: white;
}

Expand Down
Loading