diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml
new file mode 100644
index 0000000..9721002
--- /dev/null
+++ b/.github/workflows/gh-pages.yml
@@ -0,0 +1,37 @@
+name: github pages
+
+on:
+ push:
+ branches:
+ - main
+ pull_request:
+
+jobs:
+ deploy:
+ runs-on: ubuntu-24.04
+ concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Set up mdBook
+ # https://github.com/jontze/action-mdbook
+ uses: jontze/action-mdbook@v4
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ # mdbook-version: 'latest'
+ mdbook-version: "0.4.48"
+
+ - name: Build
+ run: |
+ mdbook build
+ mkdir pages
+ mv book pages/
+
+ - name: Deploy
+ uses: peaceiris/actions-gh-pages@v3
+ if: ${{ github.ref == 'refs/heads/main' }}
+ with:
+ github_token: ${{ secrets.GITHUB_TOKEN }}
+ publish_dir: ./pages
diff --git a/README.md b/README.md
index 1990649..0e7243d 100644
--- a/README.md
+++ b/README.md
@@ -41,10 +41,11 @@ For more understanding, see also any of these additional resources:
images and extraction utilities (e.g. from Lenovo)
- [x] step 1: port core logic to produce the same output as `me_cleaner` for
Lenovo ThinkPad X230 + X270
- - [ ] step 2: full parity with `me_cleaner`
-- [ ] expand the documentation with a higher-level on Intel platform boot flows
- - [ ] document how the Intel data structures work, in prose
- - [ ] document how to add support for more platforms and variants
+ - [x] step 2: full parity with `me_cleaner`
+- [ ] expand the documentation
+ - [ ] higher-level view on Intel platform boot flows
+ - [ ] how the Intel data structures work, in prose
+ - [ ] adding support for more platforms and variants
- [ ] work out a reusable library, i.e., a Rust crate for
- [ ] sync up; has another patch that
coreboot is missing, doing rework and adding ME Gen 1 support
diff --git a/book.toml b/book.toml
new file mode 100644
index 0000000..1bc9e73
--- /dev/null
+++ b/book.toml
@@ -0,0 +1,8 @@
+[book]
+authors = ["PSI contributors"]
+src = "docs"
+title = "intel_fw"
+
+[output.html]
+git-repository-url = "https://github.com/platform-system-interface/intel_fw"
+site-url = "/book/"
diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md
new file mode 100644
index 0000000..5ced4c4
--- /dev/null
+++ b/docs/SUMMARY.md
@@ -0,0 +1,5 @@
+- [`intel_fw`](intro.md)
+ - [Architecture and Design](architecture.md)
+- [Intel platforms](platforms.md)
+ - [Knowledge on Firmware Images](knowledge.md)
+
diff --git a/docs/intro.md b/docs/intro.md
new file mode 100644
index 0000000..a572e4b
--- /dev/null
+++ b/docs/intro.md
@@ -0,0 +1,7 @@
+# `intel_fw`
+
+This is both a command-line interface (CLI) and a library for analyzing and
+editing firmware images for [Intel hardware platforms](./platforms.md).
+
+The [architecture](./architecture.md) is based on [knowledge](./knowledge.md)
+from prior research.