Skip to content
Merged
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
95 changes: 95 additions & 0 deletions .github/skills/hyperlight-blog-content.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
# Skill: Populate Hyperlight Blog Content

## Purpose
Search for Hyperlight blog posts and conference talks, then create `.mdx` files in `./src/content/docs/blog/` for each piece of found content. This skill is reusable and should not create duplicates of existing blog entries.

## Sources to Search

### Blog Posts
- **Microsoft Open Source Blog**: Search `https://opensource.microsoft.com/blog/search?s=hyperlight` for all posts mentioning Hyperlight. Fetch the search results page and extract each blog post title, date, URL, and author.

### Conference Talks
Search for Hyperlight sessions at these conferences (check all years and regions):
- **KubeCon + CloudNativeCon** (NA, EU, Asia — all years). Search sched.com schedule pages, e.g., `https://kccncna2024.sched.com/?searchstring=hyperlight`, `https://kccnceu2025.sched.com/?searchstring=hyperlight`, `https://colocatedeventseu2026.sched.com/?searchstring=hyperlight`, etc.
- **WasmCon** — co-located at KubeCon events.
- **Wasm I/O** — check `https://wasm.io/sessions/` for Hyperlight sessions.
- **RustConf** — check `https://rustconf.com/schedule` or equivalent for Hyperlight talks.

### YouTube
- Search for Hyperlight conference talks on YouTube for recordings: `https://www.youtube.com/results?search_query=hyperlight+kubecon`, `https://www.youtube.com/results?search_query=hyperlight+conference+talk`, etc.

## Procedure

1. **Scan sources**: Fetch search/listing pages above and extract all Hyperlight-related content (blog posts and conference talks).

2. **Check for duplicates**: List existing files in `./src/content/docs/blog/` and read their frontmatter. Skip any content that already has a corresponding `.mdx` file (match by title or URL in the description).

3. **Create `.mdx` files**: For each new piece of content, create a file in `./src/content/docs/blog/` following the format in `./src/content/docs/blog/example.mdx`.

## File Naming Convention
Use kebab-case derived from the title, e.g.:
- `introducing-hyperlight.mdx`
- `hyperlight-kubecon-na-2024-keynote.mdx`
- `hyperlight-wasm-fast-secure-os-free.mdx`

## Frontmatter Format
Each `.mdx` file must follow this structure:

```mdx
---
title: "<Title of the blog post or talk>"
date: <YYYY-MM-DD>
---

<Brief 2-4 sentence summary of the content.>

[Read the full blog post](<URL>) or [Watch the talk](<URL>)
```

### Rules
- The `date` field must match the **publication date** (for blog posts) or the **presentation date** (for conference talks).
- The description must be a brief summary (2-4 sentences) of the content and must include a link to the original source.
- For conference talks, include the conference name, year, location, and speaker(s) in the summary.
- For blog posts, include the author name(s) in the summary.
- **Hyperlink engineer names** to their GitHub profiles using `[Name](https://github.com/username)` format. Refer to the **Engineer GitHub Accounts** table below.
- **Use correct tense based on event date**: If a conference talk has **not yet occurred** (its date is in the future), prefix the title with `Upcoming Talk:` (or `Upcoming Workshop:` for workshops), write the summary in **future tense** (e.g., "will present", "will explore", "will cover"), and frame the post as an upcoming event alert — use link text like "View the session and add it to your calendar" instead of "Watch the talk". If the event has **already occurred**, do not include the "Upcoming" prefix, use past or present tense as appropriate, and link to recordings if available. When an upcoming event passes, update the title to remove the prefix and revise the summary tense accordingly.
- Do **not** duplicate existing entries in `./src/content/docs/blog/`.

## Engineer GitHub Accounts
When mentioning engineers in blog summaries, always hyperlink their names to their GitHub profiles. If a new engineer is encountered, look up their GitHub account and add them to this table.

| Name | GitHub Profile |
|------|---------------|
| Yosh Wuyts | [yoshuawuyts](https://github.com/yoshuawuyts) |
| Danilo Chiarlone | [danbugs](https://github.com/danbugs) |
| Ludvig Liljenberg | [ludfjig](https://github.com/ludfjig) |
| Doru Blânzeanu | [dblnz](https://github.com/dblnz) |
| Rita Zhang | [ritazh](https://github.com/ritazh) |
| Pedro Henrique Penna | [ppenna](https://github.com/ppenna) |
| Lucy Menon | [syntactically](https://github.com/syntactically) |
| Ralph Squillace | [squillace](https://github.com/squillace) |
| Tomasz Andrzejak | [andreiltd](https://github.com/andreiltd) |

## Known Content Catalog

### Blog Posts (Microsoft Open Source Blog)
| Title | Date | URL |
|-------|------|-----|
| Introducing Hyperlight: Virtual machine-based security for functions at scale | 2024-11-07 | https://opensource.microsoft.com/blog/2024/11/07/introducing-hyperlight-virtual-machine-based-security-for-functions-at-scale |
| Hyperlight: Achieving 0.0009-second micro-VM execution time | 2025-02-11 | https://opensource.microsoft.com/blog/2025/02/11/hyperlight-creating-a-0-0009-second-micro-vm-execution-time |
| Build a Hyperlight C guest to securely execute JavaScript | 2025-03-10 | https://opensource.microsoft.com/blog/2025/03/10/build-a-hyperlight-c-guest-to-securely-execute-javascript |
| Hyperlight Wasm: Fast, secure, and OS-free | 2025-03-26 | https://opensource.microsoft.com/blog/2025/03/26/hyperlight-wasm-fast-secure-and-os-free |
| Hyperlight: Debugging hardware-protected guests | 2025-07-14 | https://opensource.microsoft.com/blog/2025/07/14/hyperlight-debugging-hardware-protected-guests |
| Hyperlight Nanvix: POSIX support for Hyperlight Micro-VMs | 2026-01-28 | https://opensource.microsoft.com/blog/2026/1/28/hyperlight-nanvix-bringing-multi-language-support-for-extremely-fast-hardware-isolated-micro-vms |

### Conference Talks
| Title | Date | Conference | Speakers | URL |
|-------|------|-----------|----------|-----|
| KubeCon NA 2024 Keynote Demo | 2024-11-14 | KubeCon + CloudNativeCon NA 2024, Salt Lake City | Rita Zhang | https://youtu.be/f8ornY7h2KE?feature=shared&t=290 |
| Re-Engineering Microsoft's Hyperlight in Rust | 2025-09-03 | RustConf 2025, Seattle | Danilo Chiarlone, Ludvig Liljenberg | https://rustconf2025.wpenginepowered.com/schedule |
| Running Wasmtime in Hardware-Isolated Microenvironments | 2026-03-23 | WasmCon @ KubeCon EU 2026, Amsterdam | Danilo Chiarlone | https://colocatedeventseu2026.sched.com/event/2DY28 |
| Hands-On with Hyperlight and Wasm | 2026-03-19 | Wasm I/O 2026, Barcelona | Lucy Menon, Ralph Squillace, Tomasz Andrzejak | https://wasm.io/sessions/ |
| Even More Hoops: Debugging WebAssembly across the Hardware Memory Partition Boundary | 2026-03-19 | Wasm I/O 2026, Barcelona | Doru Blânzeanu | https://wasm.io/sessions/ |

## Updating This Skill
When new Hyperlight content is discovered, add it to the **Known Content Catalog** tables above so future runs can check for completeness. Always re-search the sources above to discover any newly published content not yet in the catalog.
43 changes: 43 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Build & Deploy Site

on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:

permissions:
contents: read

concurrency:
group: pages-${{ github.ref }}
cancel-in-progress: true

jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Build with Astro
uses: withastro/action@v3

deploy:
name: Deploy
if: github.event_name == 'push' || github.event_name == 'workflow_dispatch'
needs: build
runs-on: ubuntu-latest
permissions:
contents: read
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
21 changes: 21 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# build output
dist/
# generated types
.astro/

# dependencies
node_modules/

# logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*


# environment variables
.env
.env.production

# macOS-specific files
.DS_Store
8 changes: 8 additions & 0 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"recommendations": [
"astro-build.astro-vscode",
"dbaeumer.vscode-eslint",
"hideoo.starlight-links"
],
"unwantedRecommendations": []
}
30 changes: 30 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "Astro: Debug Server-Side",
"type": "node-terminal",
"request": "launch",
"command": "npm run dev",
"serverReadyAction": {
"pattern": "Local .+ (https?://.+)",
"uriFormat": "%s",
"action": "debugWithChrome"
}
},
{
"name": "Astro: Debug Client-Side (Chrome)",
"type": "chrome",
"request": "launch",
"url": "http://localhost:4321", // Adjust port if necessary
"webRoot": "${workspaceFolder}"
},
{
"name": "Astro: Debug Client-Side (Edge)",
"type": "msedge",
"request": "launch",
"url": "http://localhost:4321", // Adjust port if necessary
"webRoot": "${workspaceFolder}"
}
]
}
10 changes: 10 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"chat.tools.terminal.autoApprove": {
"npx astro": true,
"/^node node_modules/\\.bin/astro build 2>&1$/": {
"approve": true,
"matchCommandLine": true
},
"git stash": true
}
}
1 change: 1 addition & 0 deletions CNAME
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
hyperlight.org
50 changes: 50 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@

# Starlight Starter Kit: Basics

[![Built with Starlight](https://astro.badg.es/v2/built-with-starlight/tiny.svg)](https://starlight.astro.build)

```
npm create astro@latest -- --template starlight
```

> 🧑‍🚀 **Seasoned astronaut?** Delete this file. Have fun!

## 🚀 Project Structure

Inside of your Astro + Starlight project, you'll see the following folders and files:

```
.
├── public/
├── src/
│ ├── assets/
│ ├── content/
│ │ └── docs/
│ └── content.config.ts
├── astro.config.mjs
├── package.json
└── tsconfig.json
```

Starlight looks for `.md` or `.mdx` files in the `src/content/docs/` directory. Each file is exposed as a route based on its file name.

Images can be added to `src/assets/` and embedded in Markdown with a relative link.

Static assets, like favicons, can be placed in the `public/` directory.

## 🧞 Commands

All commands are run from the root of the project, from a terminal:

| Command | Action |
| :------------------------ | :----------------------------------------------- |
| `npm install` | Installs dependencies |
| `npm run dev` | Starts local dev server at `localhost:4321` |
| `npm run build` | Build your production site to `./dist/` |
| `npm run preview` | Preview your build locally, before deploying |
| `npm run astro ...` | Run CLI commands like `astro add`, `astro check` |
| `npm run astro -- --help` | Get help using the Astro CLI |

## 👀 Want to learn more?

Check out [Starlight’s docs](https://starlight.astro.build/), read [the Astro documentation](https://docs.astro.build), or jump into the [Astro Discord server](https://astro.build/chat).
33 changes: 33 additions & 0 deletions astro.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
// @ts-check
import { defineConfig } from 'astro/config';
import starlight from '@astrojs/starlight';
import starlightBlog from 'starlight-blog';

export default defineConfig({
site: 'https://hyperlight.org',
integrations: [
starlight({
title: 'Hyperlight',
components: {
Footer: './src/components/HyperlightFooter.astro'
},
social: [{ icon: 'github', label: 'GitHub', href: 'https://github.com/hyperlight-dev/hyperlight' }],
sidebar: [
{
label: 'Guides',
items: [
{ label: 'Getting Started', slug: 'guides/getting-started' },
],
},
{
label: 'Resources',
items: [
{ label: 'Projects', slug: 'resources/projects' },
{ label: 'Community', slug: 'resources/community' },
],
},
],
plugins: [starlightBlog({})],
}),
],
});
Loading