The official bilingual website for Whitzard and the NUWA Frontier AI Safety Lab.
Repository: https://github.com/WhitzardAgent/whitzardagent.github.io Domain: whitzard.tech Hosting: GitHub Pages
- Astro — static site framework
- MDX — Markdown + JSX content
- Tailwind CSS — utility-first styling
- GitHub Actions — build and deploy
npm install
npm run devOpen http://localhost:4321 in your browser.
npm run buildThis automatically runs npm run ingest:info (via prebuild) before building. Output goes to ./dist.
Two optional public environment variables connect the static website to production services:
PUBLIC_CONSOLE_URL=https://console.example.com
PUBLIC_WAITLIST_ENDPOINT=https://api.example.com/waitlistOnly HTTPS values are accepted. Without a console URL, /login explains the current access path without rendering a simulated sign-in. Without a waitlist endpoint, the qualification form remains visible but does not claim to store data and offers the published email address instead.
npm run ingest:infoReads JSONL metadata from public/assets/info/ and generates TypeScript data files under src/data/generated/.
File: public/assets/info/ai_safety_research_assets_metadata.jsonl
Each line is a JSON object with fields: Title, Authors, Year, Venue / Status, URL, PDF URL, Topic, One-line summary, Featured or not.
Running npm run ingest:info generates src/data/generated/researchAssets.ts with typed ResearchAsset objects.
File: public/assets/info/whitzardagent_open_assets_metadata.jsonl
Each line is a JSON object with fields: Name, Status, One-line description, GitHub / HF / website link, Visible or hidden.
Running npm run ingest:info generates src/data/generated/openSourceAssets.ts with typed OpenSourceAsset objects. Only projects with Visible or hidden: "visible" are included.
Directory: public/assets/og/
whitzard-og.png— used for Whitzard-branded pages (home, about, contact, open source, agentguard)nuwa-og.png— used for Nuwa-branded pages (nuwa, research, blog)
To add new OG images, place them in public/assets/og/ and update the ogImage prop on the relevant page.
| Path | Description |
|---|---|
/ |
Whitzard main entrance |
/agentguard |
AgentGuard product and service system |
/models |
Model Services |
/solutions |
Enterprise use cases |
/nuwa |
NUWA Frontier AI Safety Lab |
/nuwa/research |
Research programs, evidence, and publication archive |
/nuwa/blog |
Human-written Research Blog |
/nuwa/whitzard-index |
Whitzard Index |
/open-ecosystem |
Open ecosystem |
/about |
Team and organization |
/contact |
Collaboration and contact |
/waitlist |
Product waitlist and qualification form |
/login |
Truthful console boundary when no console URL is configured |
/rss.xml |
RSS feed |
Chinese routes are unprefixed. English peers live under /en/*. Historic /research, /blog, /developers, /open-source, /publications, and /NVWA-Project/ routes are compatibility redirects.
Each Research Blog article is paired with an existing research record and published as human-written Chinese and English Markdown.
npm run new:research-blog -- --research <research-slug> --slug <article-slug> --author "Author Name"The command creates paired .zh.md and .en.md drafts under src/content/research-blog/. Edit both, complete human review, then set draft: false in both files. The full editorial and release checklist is in docs/website-v2/14-research-blog-publishing.md.
Edit src/data/team.ts:
{
name: "Name",
role: "Role",
affiliation: "whitzard" | "nuwa",
category: "founding" | "research" | "engineering" | "advisor",
bio: "Bio text.",
links: [{ label: "Website", url: "https://..." }],
photo: "/assets/team/name.jpg",
}Edit src/data/links.ts.
The site deploys automatically via GitHub Actions on every push to main.
Workflow: .github/workflows/deploy.yml
Steps:
- Checkout code
- Install Node 22
npm ci- Validate tests, terminology, Research Blog pairs, and Astro types
npm run build- Validate rendered content and internal links
- Upload
./distand deploy to GitHub Pages
Important: GitHub Pages source must be set to "GitHub Actions" in repo Settings > Pages.
CNAME file contains: whitzard.tech
DNS configuration:
www CNAME whitzardagent.github.io
For apex domain (whitzard.tech):
@ A 185.199.108.153
@ A 185.199.109.153
@ A 185.199.110.153
@ A 185.199.111.153
No paid server or HTTPS certificate is required. GitHub Pages issues HTTPS automatically.
- Verify
whitzard.techresolves to GitHub Pages - Verify HTTPS certificate is active
- If switching canonical domain, update both CNAME file and GitHub Pages settings
| Channel | URL |
|---|---|
| X | https://x.com/NuwaAISafety |
| Substack | https://nuwasafety.substack.com/ |
| GitHub | https://github.com/WhitzardAgent |
| Hugging Face | https://huggingface.co/WhitzardAgent |
| mailto:whitzardindex@fudan.edu.cn |
All links are centralized in src/data/links.ts.
The public contact address is defined once in src/data/links.ts and reused across the site.
The previous website implementation is preserved in legacy-backup/.