diff --git a/README.md b/README.md
index edef77a..30961db 100644
--- a/README.md
+++ b/README.md
@@ -17,170 +17,11 @@
   - under the License.
   -->
 
-# Apache Iceberg Documentation Site
+# Apache Iceberg Documentation Site (Archived)
 
-This repository contains the documentation for [Apache Iceberg](https://github.com/apache/iceberg).
-It's built with [Hugo](https://gohugo.io/) and hosted at https://iceberg.apache.org.
+> [!WARNING]  
+> This repository is an archive for the old Apache Iceberg documentation. This was moved to the [main Iceberg repository](https://github.com/apache/iceberg/tree/main/site).
+> Please submit any website or documentation related [issues](https://github.com/apache/iceberg/issues) and [pull requests](https://github.com/apache/iceberg/pulls) to the
+> main repository.
 
-# Structure
-
-The Iceberg documentation site is actually constructed from two hugo sites. The first, is the landing page. The second site, 
-is the documentation site which contains the full Iceberg documentation, including the javadoc. The landing page and
-documentation sites are completely self-contained in the `./landing-page` and `./docs` directories, respectively.
-The Javadocs are in the `./javadoc` directory.
-
-## Relationship to the Iceberg Repository
-
-All markdown pages that are specific to an Iceberg version are maintained in the iceberg repository. All pages common across all version
-releases are kept here in the iceberg-docs repo. A few exceptions are the markdown files that can be found in the `format` folder in
-the iceberg repository and contains markdown files that are copied into `./landing-page/content/common/`.
-
-`apache/iceberg`
-- The `docs` folder in the [Iceberg repository](https://github.com/apache/iceberg) contains all the markdown docs used by the **versioned** docs site.
-- The `format` folder contains some items that are common across all versions, such as the Iceberg format specification.
-
-`apache/iceberg-docs`
-- The `docs/content/docs` folder is the target folder when copying the docs over during a version release
-- The `landing-page/content/common` folder is where you can find the common markdown files shared across all versions
-
-During each new release, the release manager will:
-1. Copy the contents under `format` in the iceberg repo to `./landing-page/content/common/` in the `main` branch
-2. Create a branch in this repo from main named for the release version
-3. Copy the contents under `docs` in the iceberg repo to `./docs/content/docs` in the **release** branch
-4. Generate the javadocs for the release and copy them into the `javadoc` directory in the release branch
-5. Update the latest branch HEAD to point to the release branch HEAD
-
-# How to Contribute
-
-## Submitting Pull Requests
-
-Changes to the markdown contents for **version** specific pages should be submitted directly in the Iceberg repository.
-
-Changes to the markdown contents for common pages should be submitted to this repository against the `main` branch.
-
-Changes to the website appearance (e.g. HTML, CSS changes) should be submitted to this repository against the `main` branch.
-
-Changes to the documentation of old Iceberg versions should be submitted to this repository against the specific version branch.
-
-In summary, you can open a PR against where you find the related markdown file. With the exception of `spec.md`, there are no duplicate
-markdown files between the `master` branch in the iceberg repo and the `main` branch in the iceberg-docs repo. For changes to `spec.md`,
-PRs should be opened against the iceberg repo, not the iceberg-docs repo.
-
-## Reporting Issues
-
-All issues related to the doc website should still be submitted to the [Iceberg repository](https://github.com/apache/iceberg).
-The GitHub Issues feature of this repository is disabled.
-
-## Running Locally
-
-Clone this repository to run the website locally:
-```shell
-git clone git@github.com:apache/iceberg-docs.git
-cd iceberg-docs
-```
-
-To start the landing page site locally, run:
-```shell
-(cd landing-page && hugo serve)
-```
-
-To start the documentation site locally, run:
-```shell
-(cd docs && hugo serve)
-```
-
-If you would like to see how the latest website looks based on the documentation in the Iceberg repository, you can copy docs to this repository by:
-```shell
-rm -rf docs/content/docs
-cp -r <path to iceberg repo>/docs docs/content/docs
-cp -r <path to iceberg repo>/format/* landing-page/content/common/
-```
-
-## Scanning For Broken Links
-
-If you'd like to scan for broken links, one available tool is linkcheck that can be found [here](https://github.com/filiph/linkcheck).
-
-# How the Website is Deployed
-
-**Note**: If you are a release manager looking to release a new version of the website as part of an Iceberg release,
-please refer to the [Documentation Release](https://iceberg.apache.org/how-to-release/#documentation-release) section
-of the **How to Release** page.
-
-## Landing Page Deployment
-
-The landing page site is automatically deployed to the root of the `asf-site` branch by the `deploy-landing-page`
-job in the [deployment workflow](./.github/workflows/deploy.yml). There is only a single version of the landing
-page site, and the `deploy-landing-page` job only runs on commits to the `main` branch.
-
-## Docs Deployment
-
-The docs site is automatically deployed to the `docs` directory in the asf-site branch, into a sub-directory
-named after the branch where the commit occurred. This is performed by the `deploy-docs` job in the
-[deployment workflow](./.github/workflows/deploy.yml). The job deploys the docs site on commits to any branch
-**except** `main`. A branch is maintained for each Iceberg version. If the job runs and the directory does not
-yet exist in the `asf-site` branch, it will be created.
-
-Additionally, the contents of the `javadoc` directory is deployed to a `javadoc/<branch_name>` directory in
-the `asf-site` branch.
-
-### Latest Docs
-In [./docs/redirect/index.html](./docs/redirect/index.html), a redirect meta tag exists to forward `/docs` 
-and `/latest` to `/docs/latest`.
-
-## `asf-site` Branch Structure
-
-The `asf-site` branch structure is the following:
-```
-.
-├── docs
-│   ├── 0.12.1
-│   │   └── <Full Docs Site @0.12.1>
-│   ├── latest
-│   │   └── <Full Docs Site @latest>
-│   └── index.html  <-- Includes a redirect to 0.12.1 which is the latest version
-├── javadoc
-│   ├── 0.12.1
-│   │   └── <Full javadoc site @0.12.1>
-│   └── latest
-│       └── <Full javadoc Site @latest>
-└── <Full Landing Page Site>
-```
-
-A non-`main` branch commit deploys the docs site into a new sub-directory in the
-`asf-site` branch's `docs` directory, as well as copies the javadoc directory into a new sub-directory
-in the `asf-site` branch's `javadoc` directory.
-
-A `main` branch commit deploys the landing page site **only** and overwrites the landing page site at
-the root of the `asf-site` branch.
-
-## Redirects
-
-Redirects within one of the two sites can easily be done using the `aliases` keyword in the YAML Front Matter.
-You can read more about this Hugo URL Management feature [here](https://gohugo.io/content-management/urls/#yaml-front-matter).
-
-For root level redirects that are outside of both sites, the `./redirects` directory contains pages with redirect `meta` tags.
-These are all deployed at the root level of the `asf-site` branch by the `Deploy redirects` step in the [deployment workflow](./.github/workflows/deploy.yml).
-
-## Testing Both Sites Locally
-
-In some cases, it's useful to test both the landing-page site and the docs site locally. Especially in situations
-where you need to test relative links between the two sites. This can be achieved by building both sites with custom
-`baseURL` and `publishDir` values passed to the CLI. You can then run the site with any local live server, such as the
-[Live Server](https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer) extension for VSCode.
-
-First, change into the `landing-page` directory and build the site. Use `-b` and `-d` to set `baseURL` and `publishDir`, respectively.
-```
-cd landing-page
-hugo -b http://localhost:5500/ -d ../public
-```
-
-Next, change into the `docs` directory and do the same thing. Remember that the docs-site is deployed to a `docs/<VERSION>` url, relative to the landing-page site. Since the landing-page was deployed to `../publish` in the example
-above, the example below uses `../public/docs/latest` to deploy a `latest` version docs-site.
-```
-cd ../docs
-hugo -b http://localhost:5500/docs/latest/ -d ../public/docs/latest
-```
-
-You should then have both sites deployed to the `public` directory which you can launch using your live server.
-
-**Note:** The examples above use port `5500`. Be sure to change the port number if your local live server uses a different port.
\ No newline at end of file
+See https://github.com/apache/iceberg/pull/9520 for more details.
