The official information hub for Whitzard and Nuwa Frontier AI Safety Lab.
Repository: https://github.com/WhitzardAgent/whitzardagent.github.io Domain: www.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 dev
Open http://localhost:4321 in your browser.
npm run build
This automatically runs npm run ingest:info (via prebuild) before building. Output goes to ./dist.
npm run ingest:info
Reads 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 |
/nuwa |
Nuwa Frontier AI Safety Lab |
/research |
Research and publications |
/publications |
Alias redirect to /research |
/blog |
Posts, briefs, notes, updates |
/about |
Team and organization |
/contact |
Collaboration and contact |
/open-source |
WhitzardAgent open-source ecosystem |
/agentguard |
AgentGuard project page |
/NVWA-Project/ |
Legacy redirect to /nuwa |
/rss.xml |
RSS feed |
npm run new:post # Edit src/content/posts/YYYY-MM-DD-new-post.md # Set draft: false when ready
npm run new:note # Edit src/content/notes/YYYY-MM-DD-new-note.md # Set brand: nuwa, draft: false
npm run new:brief # Edit src/content/briefs/YYYY-MM-DD-new-brief.md # Set brand: nuwa, draft: false # Optionally add substack_url for cross-posting
title: "Title" date: 2026年01月01日 type: post | brief | note | report | framework | update brand: whitzard | nuwa | whitzardagent authors: [] summary: "Short summary." tags: [] draft: true featured: false homepage: false research_area: "" external_url: substack_url: github_url: pdf_url: doi_url: project:
draft: truecontent does not appear publiclyfeatured: truecontent appears in Featured sections on Research and Nuwa pageshomepage: truecontent appears on the homepage Latest Research sectionresearch_areatags content for research area filtering
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.
- Write the content as a Nuwa Brief in
src/content/briefs/ - Build and verify locally
- Copy the markdown body to Substack editor
- Add
substack_urlto the frontmatter for cross-linking
The site deploys automatically via GitHub Actions on every push to main.
Workflow: .github/workflows/deploy.yml
Steps:
- Checkout code
- Install Node 22
npm cinpm run build- Upload
./distas artifact - Deploy to GitHub Pages
Important: GitHub Pages source must be set to "GitHub Actions" in repo Settings > Pages.
CNAME file contains: www.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
www.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:contact@whitzard.tech |
All links are centralized in src/data/links.ts.
The contact page uses contact@whitzard.tech. Verify this mailbox is configured and receiving mail. If not yet configured, update src/data/links.ts with the correct email address.
The previous website implementation is preserved in legacy-backup/.