diff --git a/.gitignore b/.gitignore
index d633a1ba..3b1fa7ba 100644
--- a/.gitignore
+++ b/.gitignore
@@ -26,3 +26,6 @@ go.work.sum
*.swp
*.swo
*~
+
+# generated docs
+site
diff --git a/Makefile b/Makefile
index de28e47f..ef32bcea 100644
--- a/Makefile
+++ b/Makefile
@@ -134,6 +134,23 @@ build-installer: manifests generate kustomize ## Generate a consolidated YAML wi
cd config/manager && $(KUSTOMIZE) edit set image controller=${IMG}
$(KUSTOMIZE) build config/default > dist/install.yaml
+##@ Docs
+
+.PHONY: build-docs
+build-docs:
+ docker build --pull -t gaie/mkdocs hack/mkdocs/image
+ docker run --rm -v ${PWD}:/docs gaie/mkdocs build
+
+.PHONY: build-docs-netlify
+build-docs-netlify:
+ pip install -r hack/mkdocs/image/requirements.txt
+ mkdocs build
+
+.PHONY: live-docs
+live-docs:
+ docker build -t gaie/mkdocs hack/mkdocs/image
+ docker run --rm -it -p 3000:3000 -v ${PWD}:/docs gaie/mkdocs
+
##@ Deployment
ifndef ignore-not-found
diff --git a/hack/mkdocs/image/Dockerfile b/hack/mkdocs/image/Dockerfile
new file mode 100644
index 00000000..87e5bd7b
--- /dev/null
+++ b/hack/mkdocs/image/Dockerfile
@@ -0,0 +1,26 @@
+# Copyright 2019 The Kubernetes Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+FROM python:3.13-alpine
+
+COPY requirements.txt /requirements.txt
+RUN pip install -r /requirements.txt
+
+WORKDIR /docs
+
+EXPOSE 3000
+
+COPY entrypoint.sh /
+
+ENTRYPOINT ["/entrypoint.sh"]
\ No newline at end of file
diff --git a/hack/mkdocs/image/entrypoint.sh b/hack/mkdocs/image/entrypoint.sh
new file mode 100755
index 00000000..9e7accc0
--- /dev/null
+++ b/hack/mkdocs/image/entrypoint.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+# Copyright 2019 The Kubernetes Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+set -o errexit
+set -o pipefail
+
+CMD=$1
+
+if [ "$CMD" == "build" ];
+then
+ mkdocs build
+ exit 0;
+fi
+
+mkdocs serve --dev-addr=0.0.0.0:3000 --livereload
\ No newline at end of file
diff --git a/hack/mkdocs/image/requirements.txt b/hack/mkdocs/image/requirements.txt
new file mode 100644
index 00000000..e7cb9b0c
--- /dev/null
+++ b/hack/mkdocs/image/requirements.txt
@@ -0,0 +1,25 @@
+# required for mkdocs-core
+jinja2~=3.0
+# mkdocs 2.4.1 requires Markdown < 3.4.0
+# https://github.com/kubernetes-sigs/gateway-api/pull/1671#issuecomment-1400586465
+markdown~=3.7
+mkdocs~=1.6
+mkdocs-material-extensions~=1.3
+pygments~=2.16
+pymdown-extensions~=10.2
+
+# Requirements for plugins
+babel~=2.10
+colorama~=0.4
+paginate~=0.5
+regex>=2022.4
+requests~=2.26
+
+# mkdocs + mkdocs plugins
+mkdocs==1.6.1
+mkdocs-awesome-pages-plugin==2.9.3
+mkdocs-macros-plugin==1.2.0
+mkdocs-material==9.5.36
+mkdocs-material-extensions==1.3.1
+mkdocs-redirects==1.2.1
+mkdocs-mermaid2-plugin==1.1.1
diff --git a/mkdocs.yml b/mkdocs.yml
new file mode 100644
index 00000000..f122d7d4
--- /dev/null
+++ b/mkdocs.yml
@@ -0,0 +1,72 @@
+site_name: Kubernetes Gateway API Inference Extension
+repo_url: https://github.com/kubernetes-sigs/gateway-api-inference-extension
+repo_name: kubernetes-sigs/gateway-api-inference-extension
+site_dir: site
+docs_dir: site-src
+extra_css:
+ - stylesheets/extra.css
+theme:
+ name: material
+ icon:
+ repo: fontawesome/brands/git-alt
+ logo: images/logo/logo-text-large-horizontal-white.png
+ favicon: images/k8s-favicon.png
+ features:
+ - search.highlight
+ - navigation.tabs
+ - navigation.top
+ - navigation.expand
+ palette:
+ primary: custom
+ custom_dir: site-src/overrides
+edit_uri: edit/main/site-src/
+plugins:
+ - search
+ - awesome-pages
+ - macros:
+ include_dir: examples
+ j2_line_comment_prefix: "#$"
+ - mermaid2
+markdown_extensions:
+ - admonition
+ - meta
+ - pymdownx.emoji:
+ emoji_index: !!python/name:material.extensions.emoji.twemoji
+ emoji_generator: !!python/name:materialx.emoji.to_svg
+ - pymdownx.details
+ - pymdownx.highlight
+ - pymdownx.inlinehilite
+ - pymdownx.superfences:
+ custom_fences:
+ - name: mermaid
+ class: mermaid
+ format: !!python/name:pymdownx.superfences.fence_code_format
+ - pymdownx.snippets
+ - toc:
+ permalink: true
+ - tables
+nav:
+ - Overview:
+ - Introduction: index.md
+ - Concepts:
+ API Overview: concepts/api-overview.md
+ Conformance: concepts/conformance.md
+ Roles and Personas: concepts/roles-and-personas.md
+ Use Cases: concepts/use-cases.md
+ - Implementations: implementations.md
+ - FAQ: faq.md
+ - Glossary: concepts/glossary.md
+ - Guides:
+ - User Guides:
+ - Getting started: guides/index.md
+ - Implementer's Guide: guides/implementers.md
+ - Reference:
+ - API Types:
+ - InferencePool: api-types/inferencepool.md
+ - InferenceModel: api-types/inferencemodel.md
+ - API specification: reference/spec.md
+ - Enhancements:
+ - Overview: gieps/overview.md
+ - Contributing:
+ - How to Get Involved: contributing/index.md
+ - Developer Guide: contributing/devguide.md
diff --git a/netlify.toml b/netlify.toml
new file mode 100644
index 00000000..ff61e3bf
--- /dev/null
+++ b/netlify.toml
@@ -0,0 +1,6 @@
+# netlify configuration
+[build]
+publish = "site"
+command = "make build-docs-netlify"
+# available here https://github.com/netlify/build-image/blob/focal/included_software.md#languages
+environment = { PYTHON_VERSION = "3.8" }
\ No newline at end of file
diff --git a/site-src/.mkdocs-exclude b/site-src/.mkdocs-exclude
new file mode 100644
index 00000000..9a2dd762
--- /dev/null
+++ b/site-src/.mkdocs-exclude
@@ -0,0 +1,6 @@
+.mkdocs-exclude
+.nojekyll
+.placeholder
+search/search_index.json
+sitemap.xml.gz
+sitemap.xml
diff --git a/site-src/api-types/inferencemodel.md b/site-src/api-types/inferencemodel.md
new file mode 100644
index 00000000..12a351b0
--- /dev/null
+++ b/site-src/api-types/inferencemodel.md
@@ -0,0 +1,14 @@
+# Inference Model
+
+??? example "Alpha since v0.1.0"
+
+ The `InferenceModel` resource is alpha and may have breaking changes in
+ future releases of the API.
+
+## Background
+
+TODO
+
+## Spec
+
+TODO
\ No newline at end of file
diff --git a/site-src/api-types/inferencepool.md b/site-src/api-types/inferencepool.md
new file mode 100644
index 00000000..b1fc339d
--- /dev/null
+++ b/site-src/api-types/inferencepool.md
@@ -0,0 +1,14 @@
+# Inference Pool
+
+??? example "Alpha since v0.1.0"
+
+ The `InferencePool` resource is alpha and may have breaking changes in
+ future releases of the API.
+
+## Background
+
+TODO
+
+## Spec
+
+TODO
\ No newline at end of file
diff --git a/site-src/concepts/api-overview.md b/site-src/concepts/api-overview.md
new file mode 100644
index 00000000..f7b50d8b
--- /dev/null
+++ b/site-src/concepts/api-overview.md
@@ -0,0 +1,3 @@
+# API Overview
+
+TODO
\ No newline at end of file
diff --git a/site-src/concepts/glossary.md b/site-src/concepts/glossary.md
new file mode 100644
index 00000000..f8bd25c0
--- /dev/null
+++ b/site-src/concepts/glossary.md
@@ -0,0 +1,3 @@
+# Gateway API Glossary
+
+TODO
\ No newline at end of file
diff --git a/site-src/concepts/roles-and-personas.md b/site-src/concepts/roles-and-personas.md
new file mode 100644
index 00000000..4a344e1f
--- /dev/null
+++ b/site-src/concepts/roles-and-personas.md
@@ -0,0 +1,3 @@
+# Roles and Personas
+
+TODO
\ No newline at end of file
diff --git a/site-src/concepts/use-cases.md b/site-src/concepts/use-cases.md
new file mode 100644
index 00000000..af7246d9
--- /dev/null
+++ b/site-src/concepts/use-cases.md
@@ -0,0 +1,3 @@
+# Use Cases
+
+TODO
\ No newline at end of file
diff --git a/site-src/contributing/devguide.md b/site-src/contributing/devguide.md
new file mode 100644
index 00000000..bc0ceaba
--- /dev/null
+++ b/site-src/contributing/devguide.md
@@ -0,0 +1,3 @@
+# Developer Guide
+
+TODO
\ No newline at end of file
diff --git a/site-src/contributing/index.md b/site-src/contributing/index.md
new file mode 100644
index 00000000..968022fa
--- /dev/null
+++ b/site-src/contributing/index.md
@@ -0,0 +1,3 @@
+# How to Get Involved
+
+TODO
\ No newline at end of file
diff --git a/site-src/faq.md b/site-src/faq.md
new file mode 100644
index 00000000..100afe45
--- /dev/null
+++ b/site-src/faq.md
@@ -0,0 +1,3 @@
+# Frequently Asked Questions (FAQ)
+
+TODO
\ No newline at end of file
diff --git a/site-src/gieps/giep-116/index.md b/site-src/gieps/giep-116/index.md
new file mode 100644
index 00000000..4d678da2
--- /dev/null
+++ b/site-src/gieps/giep-116/index.md
@@ -0,0 +1,47 @@
+# GIEP-116: GIEP template
+
+* Issue: [#0](https://github.com/kubernetes-sigs/gateway-api-inference-extension/issues/116)
+* Status: Provisional|Implementable|Experimental|Standard|Deferred|Rejected|Withdrawn|Replaced
+
+(See status definitions [here](overview.md#status).)
+
+## TLDR
+
+(1-2 sentence summary of the proposal)
+
+## Goals
+
+(Primary goals of this proposal.)
+
+## Non-Goals
+
+(What is out of scope for this proposal.)
+
+## Introduction
+
+(Can link to external doc -- but we should bias towards copying
+the content into the GEP as online documents are easier to lose
+-- e.g. owner messes up the permissions, accidental deletion)
+
+## API
+
+(... details, can point to PR with changes)
+
+## Conformance Details
+
+(This section describes the names to be used for the feature or
+features in conformance tests and profiles.
+
+These should be `CamelCase` names that specify the feature as
+precisely as possible, and are particularly important for
+Extended features, since they may be surfaced to users.)
+
+## Alternatives
+
+(List other design alternatives and why we did not go in that
+direction)
+
+## References
+
+(Add any additional document links. Again, we should try to avoid
+too much content not in version control to avoid broken links)
diff --git a/site-src/gieps/giep-116/metadata.yaml b/site-src/gieps/giep-116/metadata.yaml
new file mode 100644
index 00000000..56d10183
--- /dev/null
+++ b/site-src/gieps/giep-116/metadata.yaml
@@ -0,0 +1,32 @@
+apiVersion: internal.gateway.networking.k8s.io/v1alpha1
+kind: GIEPDetails
+number: 116
+name: GIEP template
+status: Completed
+# Any authors who contribute to the GEP in any way should be listed here using
+# their Github handle.
+authors:
+ - robscott
+relationships:
+ # obsoletes indicates that a GEP makes the linked GEP obsolete, and completely
+ # replaces that GEP. The obsoleted GEP MUST have its obsoletedBy field
+ # set back to this GEP, and MUST be moved to Declined.
+ obsoletes: {}
+ obsoletedBy: {}
+ # extends indicates that a GEP extends the linkned GEP, adding more detail
+ # or additional implementation. The extended GEP MUST have its extendedBy
+ # field set back to this GEP.
+ extends: {}
+ extendedBy: {}
+ # seeAlso indicates other GEPs that are relevant in some way without being
+ # covered by an existing relationship.
+ seeAlso: {}
+# references is a list of hyperlinks to relevant external references.
+# It's intended to be used for storing Github discussions, Google docs, etc.
+references: {}
+# featureNames is a list of the feature names introduced by the GEP, if there
+# are any. This will allow us to track which feature was introduced by which GEP.
+featureNames: {}
+# changelog is a list of hyperlinks to PRs that make changes to the GEP, in
+# ascending date order.
+changelog: {}
diff --git a/site-src/gieps/overview.md b/site-src/gieps/overview.md
new file mode 100644
index 00000000..438a0ffe
--- /dev/null
+++ b/site-src/gieps/overview.md
@@ -0,0 +1,272 @@
+# Gateway Inference Enhancement Proposal (GIEP)
+
+Gateway Inference Enhancement Proposals (GIEPs) serve a similar purpose to the
+[GIEP](https://gateway-api.sigs.k8s.io/GIEPs/overview/) process for the main
+Gateway API project:
+
+1. Ensure that changes to the API follow a known process and discussion in the
+ OSS community.
+1. Make changes and proposals discoverable (current and future).
+1. Document design ideas, tradeoffs, decisions that were made for historical
+ reference.
+1. Record the results of larger community discussions.
+1. Record changes to the GIEP process itself.
+
+## Process
+
+This diagram shows the state diagram of the GIEP process at a high level, but
+the details are below.
+
+
+
+```mermaid
+flowchart TD
+ D([Discuss with
the community]) --> C
+ C([Issue Created]) -------> Memorandum
+ C([Issue Created]) --> Provisional
+ Provisional -->|If practical
work needed| Prototyping
+ Provisional -->|GIEP Doc PR
done| Implementable
+ Prototyping -->|GIEP Doc PR
done| Implementable
+ Implementable -->|Gateway API
work completed| Experimental
+ Experimental -->|Supported in
multiple implementations
+ Conformance tests| Standard
+ Standard -->|Entire change is GA or implemented| Completed
+```
+
+
+
+## GIEP Definitions
+
+### GIEP States
+
+Each GIEP has a state, which tracks where it is in the GIEP process.
+
+GIEPs can move to some states from any other state:
+
+ * **Declined**: The GIEP has been declined and further work will not occur.
+ * **Deferred:** We do not currently have bandwidth to handle this GIEP, it may
+ be revisited in the future.
+ * **Declined:** This proposal was considered by the community but ultimately
+ rejected.
+ * **Withdrawn:** This proposal was considered by the community but ultimately
+ withdrawn by the author.
+
+There is a special state to cover Memorandum GIEPs:
+
+ * **Memorandum**: These GIEPs either:
+ * Document an agreement for further work, creating no spec changes
+ themselves, or
+ * Update the GIEP process.
+
+API GIEPs flow through a number of states, which generally correspond to the
+level of stability of the change described in the GIEP:
+
+ * **Provisional:** The goals described by this GIEP have consensus but
+ implementation details have not been agreed to yet.
+ * **Prototyping:** An extension of `Provisional` which can be opted in to in
+ order to indicate to the community that there are some active practical
+ tests and experiments going on which are intended to be a part of the
+ development of this GIEP. This may include APIs or code, but that content
+ _must_ not be distributed with releases.
+ * **Implementable:** The goals and implementation details described by this
+ GIEP have consensus but have not been fully implemented yet.
+ * **Experimental:** This GIEP has been implemented and is part of the
+ "Experimental" release channel. Breaking changes are still possible, up to
+ and including complete removal and moving to `Rejected`.
+ * **Standard:** This GIEP has been implemented and is part of the "Standard"
+ release channel. It should be quite stable.
+ * **Completed**: All implementation work on this API GIEP has been completed.
+
+### Relationships between GIEPs
+
+GIEPs can have relationships between them. At this time, there are three
+possible relationships:
+
+* **Obsoletes** and its backreference **ObsoletedBy**: when a GIEP is made
+ obsolete by another GIEP, and has its functionality completely replaced. The
+ Obsoleted GIEP is moved to the **Declined** state.
+* **Extends** and its backreference **ExtendedBy**: when a GIEP has additional
+ details or implementation added in another GIEP.
+* **SeeAlso**: when a GIEP is relevant to another GIEP, but is not affected in
+ any other defined way.
+
+Relationships are tracked in the YAML metadata files accompanying each GIEP.
+
+### GIEP metadata file
+
+Each GIEP has a YAML file containing metadata alongside it, please keep it up to
+date as changes to the GIEP occur.
+
+In particular, note the `authors`, and `changelog` fields, please keep those up
+to date.
+
+## Process
+
+### 1. Discuss with the community
+
+Before creating a GIEP, share your high level idea with the community. There are
+several places this may be done:
+
+- A [new GitHub
+ Discussion](https://github.com/kubernetes-sigs/gateway-api/discussions/new)
+- On our [Slack Channel](https://kubernetes.slack.com/archives/CR0H13KGA)
+- On one of our [community
+ meetings](https://gateway-api.sigs.k8s.io/contributing/?h=meetings#meetings)
+
+Please default to GitHub discussions: they work a lot like GitHub issues which
+makes them easy to search.
+
+### 2. Create an Issue
+[Create a GIEP
+issue](https://github.com/kubernetes-sigs/gateway-api/issues/new?assignees=&labels=kind%2Ffeature&template=enhancement.md)
+in the repo describing your change. At this point, you should copy the outcome
+of any other conversations or documents into this document.
+
+### 3. Agree on the Goals
+Although it can be tempting to start writing out all the details of your
+proposal, it's important to first ensure we all agree on the goals.
+
+For API GIEPs, the first version of your GIEP should aim for a "Provisional"
+status and leave out any implementation details, focusing primarily on "Goals"
+and "Non-Goals".
+
+For Memorandum GIEPs, the first version of your GIEP will be the only one, as
+Memorandums have only a single stage - `Accepted`.
+
+### 3. Document Implementation Details
+Now that everyone agrees on the goals, it is time to start writing out your
+proposed implementation details. These implementation details should be very
+thorough, including the proposed API spec, and covering any relevant edge cases.
+Note that it may be helpful to use a shared doc for part of this phase to enable
+faster iteration on potential designs.
+
+It is likely that throughout this process, you will discuss a variety of
+alternatives. Be sure to document all of these in the GIEP, and why we decided
+against them. At this stage, the GIEP should be targeting the "Implementable"
+stage.
+
+### 4. Implement the GIEP as "Experimental"
+
+With the GIEP marked as "Implementable", it is time to actually make those
+proposed changes in our API. In some cases, these changes will be documentation
+only, but in most cases, some API changes will also be required. It is important
+that every new feature of the API is marked as "Experimental" when it is
+introduced. Within the API, we use `` tags to denote
+experimental fields. Within Golang packages (conformance tests, CLIs, e.t.c.) we
+use the `experimental` Golang build tag to denote experimental functionality.
+
+Some other requirements must be met before marking a GIEP `Experimental`:
+
+- the graduation criteria to reach `Standard` MUST be filled out
+- a proposed probationary period (see next section) must be included in the GIEP
+ and approved by maintainers.
+
+Before changes are released they MUST be documented. GIEPs that have not been
+both implemented and documented before a release cut off will be excluded from
+the release.
+
+#### Probationary Period
+
+Any GIEP in the `Experimental` phase is automatically under a "probationary
+period" where it will come up for re-assessment if its graduation criteria are
+not met within a given time period. GIEPs that wish to move into `Experimental`
+status MUST document a proposed period (6 months is the suggested default) that
+MUST be approved by maintainers. Maintainers MAY select an alternative time
+duration for a probationary period if deemed appropriate, and will document
+their reasoning.
+
+> **Rationale**: This probationary period exists to avoid GIEPs getting "stale"
+> and to provide guidance to implementations about how relevant features should
+> be used, given that they are not guaranteed to become supported.
+
+At the end of a probationary period if the GIEP has not been able to resolve its
+graduation criteria it will move to "Rejected" status. In extenuating
+circumstances an extension of that period may be accepted by approval from
+maintainers. GIEPs which are `Rejected` in this way are removed from the
+experimental CRDs and more or less put on hold. GIEPs may be allowed to move
+back into `Experimental` status from `Rejected` for another probationary period
+if a new strategy for achieving their graduation criteria can be established.
+Any such plan to take a GIEP "off the shelf" must be reviewed and accepted by
+the maintainers.
+
+> **Warning**: It is extremely important** that projects which implement
+> `Experimental` features clearly document that these features may be removed in
+> future releases.
+
+### 5. Graduate the GIEP to "Standard"
+
+Once this feature has met the [graduation
+criteria](/concepts/versioning/#graduation-criteria), it is time to graduate it
+to the "Standard" channel of the API. Depending on the feature, this may include
+any of the following:
+
+1. Graduating the resource to beta
+2. Graduating fields to "standard" by removing `` tags
+3. Graduating a concept to "standard" by updating documentation
+
+### 6. Close out the GIEP issue
+
+The GIEP issue should only be closed once the feature has:
+- Moved to the standard channel for distribution (if necessary)
+- Moved to a "v1" `apiVersion` for CRDs
+- been completely implemented and has wide acceptance (for process changes).
+
+In short, the GIEP issue should only be closed when the work is "done" (whatever
+that means for that GIEP).
+
+## Format
+
+GIEPs should match the format of the template found in
+[GIEP-696](/GIEPs/GIEP-696).
+
+## Out of scope
+
+What is out of scope: see [text from KEP][kep-when-to-use]. Examples:
+
+* Bug fixes
+* Small changes (API validation, documentation, fixups). It is always possible
+ that the reviewers will determine a "small" change ends up requiring a GIEP.
+
+## FAQ
+
+#### Why is it named GIEP?
+To avoid potential confusion if people start following the cross references to
+the full GEP or KEP process.
+
+#### Why have a different process than mainline?
+Gateway API has some differences with most upstream KEPs. Notably Gateway API
+intentionally avoids including any implementation with the project, so this
+process is focused entirely on the substance of the API. As this project is
+based on CRDs it also has an entirely separately release process, and has
+developed concepts like "release channels" that do not exist in upstream.
+
+#### Is it ok to discuss using shared docs, scratch docs etc?
+Yes, this can be a helpful intermediate step when iterating on design details.
+It is important that all major feedback, discussions, and alternatives
+considered in that step are represented in the GIEP though. A key goal of GIEPs
+is to show why we made a decision and which alternatives were considered. If
+separate docs are used, it's important that we can still see all relevant
+context and decisions in the final GIEP.
+
+#### When should I mark a GIEP as `Prototyping` as opposed to `Provisional`?
+The `Prototyping` status carries the same base meaning as `Provisional` in that
+consensus is not complete between stakeholders and we're not ready to move
+toward releasing content yet. You should use `Prototyping` to indicate to your
+fellow community members that we're in a state of active practical tests and
+experiments which are intended to help us learn and iterate on the GIEP. These
+can include distributing content, but not under any release channel.
+
+#### Should I implement support for `Experimental` channel features?
+Ultimately one of the main ways to get something into `Standard` is for it to
+mature through the `Experimental` phase, so we really _need_ people to implement
+these features and provide feedback in order to have progress. That said, the
+graduation of a feature past `Experimental` is not a forgone conclusion. Before
+implementing an experimental feature, you should:
+
+* Clearly document that support for the feature is experimental and may
+ disappear in the future.
+* Have a plan in place for how you would handle the removal of this feature from
+ the API.
+
+[kep]: https://github.com/kubernetes/enhancements
+[kep-when-to-use]:
+ https://github.com/kubernetes/enhancements/tree/master/keps#do-i-have-to-use-the-kep-process
diff --git a/site-src/guides/implementers.md b/site-src/guides/implementers.md
new file mode 100644
index 00000000..5d1c6267
--- /dev/null
+++ b/site-src/guides/implementers.md
@@ -0,0 +1,3 @@
+# Implementer's Guide
+
+TODO
\ No newline at end of file
diff --git a/site-src/guides/index.md b/site-src/guides/index.md
new file mode 100644
index 00000000..92f6412a
--- /dev/null
+++ b/site-src/guides/index.md
@@ -0,0 +1,3 @@
+# Getting started with Gateway API Inference Extension
+
+TODO
\ No newline at end of file
diff --git a/site-src/images/logo/logo-text-large-horizontal-white.png b/site-src/images/logo/logo-text-large-horizontal-white.png
new file mode 100644
index 00000000..dd488044
Binary files /dev/null and b/site-src/images/logo/logo-text-large-horizontal-white.png differ
diff --git a/site-src/implementations.md b/site-src/implementations.md
new file mode 100644
index 00000000..1f568650
--- /dev/null
+++ b/site-src/implementations.md
@@ -0,0 +1,3 @@
+# Implementations
+
+TODO
\ No newline at end of file
diff --git a/site-src/index.md b/site-src/index.md
new file mode 100644
index 00000000..ea38ab83
--- /dev/null
+++ b/site-src/index.md
@@ -0,0 +1,3 @@
+# Introduction
+
+TODO
\ No newline at end of file
diff --git a/site-src/overrides/partials/header.html b/site-src/overrides/partials/header.html
new file mode 100644
index 00000000..07b787a4
--- /dev/null
+++ b/site-src/overrides/partials/header.html
@@ -0,0 +1,117 @@
+
+
+
+{% set class = "md-header" %}
+{% if "navigation.tabs.sticky" in features %}
+ {% set class = class ~ " md-header--shadow md-header--lifted" %}
+{% elif "navigation.tabs" not in features %}
+ {% set class = class ~ " md-header--shadow" %}
+{% endif %}
+
+
+
+
+
+
+ {% if "navigation.tabs.sticky" in features %}
+ {% if "navigation.tabs" in features %}
+ {% include "partials/tabs.html" %}
+ {% endif %}
+ {% endif %}
+
diff --git a/site-src/reference/spec.md b/site-src/reference/spec.md
new file mode 100644
index 00000000..df95f97e
--- /dev/null
+++ b/site-src/reference/spec.md
@@ -0,0 +1,5 @@
+# API Specification
+
+This page contains the API field specification for Gateway API.
+
+REPLACE_WITH_GENERATED_CONTENT
diff --git a/site-src/stylesheets/extra.css b/site-src/stylesheets/extra.css
new file mode 100644
index 00000000..83df9a8d
--- /dev/null
+++ b/site-src/stylesheets/extra.css
@@ -0,0 +1,43 @@
+/* Hide title in favor of logo */
+.md-header__topic {
+ display: none;
+}
+
+/* Use Kubernetes color as primary */
+:root {
+ --md-primary-fg-color: #326ce5;
+}
+
+/* Increase size of logo */
+.md-header__button.md-logo img, .md-header__button.md-logo svg {
+ height: 1.8rem;
+}
+
+/* Always show tabs, even on smaller screens */
+@media screen and (max-width: 76.234375em) {
+ .md-header__button.md-logo {
+ display: block;
+ }
+ .md-tabs {
+ display: block;
+ }
+}
+
+/* Rounded search box + results */
+.md-search__form {
+ border-radius: .5rem;
+}
+
+[data-md-toggle=search]:checked~.md-header .md-search__form {
+ border-radius: .5rem .5rem 0 0;
+}
+[dir=ltr] .md-search__output {
+ border-radius: 0 0 .5rem .5rem;
+}
+
+/* Center images */
+img.center {
+ display: block;
+ margin: 20px auto;
+ width: 550px;
+}