diff --git a/docs/design-docs/CaD Core Architecture.svg b/docs/design-docs/CaD Core Architecture.svg
index f2e415be84..2650dbb29a 100644
--- a/docs/design-docs/CaD Core Architecture.svg
+++ b/docs/design-docs/CaD Core Architecture.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/porch/docs/porch-roadmap.md b/porch/docs/porch-roadmap.md
index 942cf13618..7d08dcb862 100644
--- a/porch/docs/porch-roadmap.md
+++ b/porch/docs/porch-roadmap.md
@@ -31,6 +31,10 @@ document outlining future direction and work in different Porch subsystems.
* Support updating repository registration, for example when `Repository`
resource is modified to point to a different repository, or even a different
type of a repository (Git --> OCI).
+* Support read only repositories. Porch will allow package discovery in a read
+ only repository but attempt to create/modify package in read only repository
+ will result in an error. Consider supporting via RBAC so different principals
+ can have different level of access to the same repository.
* Implement repository cache eviction policy
* Support `ObjectMeta.GenerateName` for `PackageRevision` creation. Currently
package names are computed as -. Ideally Porch would accept
diff --git a/site/book/08-package-orchestration/00.md b/site/book/08-package-orchestration/00.md
new file mode 100644
index 0000000000..ccca18f51c
--- /dev/null
+++ b/site/book/08-package-orchestration/00.md
@@ -0,0 +1,62 @@
+In this chapter, we are going to cover _package orchestration_ - management
+of package lifecycle supported by the kpt toolchain.
+
+Package Orchestration encompasses management of the overall lifecycle of the
+configuration package, including:
+
+* management of package repositories
+* discovery of configuration packages and kpt functions
+* creating, modifying, updating, and deleting packages
+* versioning packages
+* WYSIWYG package authoring and customization with _guardrails_
+* evaluation of functions on package data
+* approval flow to publish a change to a configuration package
+* deployment and rollouts
+
+Package Orchestration enables [workflows](/book/02-concepts/02-workflows)
+similar to those supported by the kpt CLI, but makes them available as a
+service and enables creation of WYSIWYG user experiences, similar to the
+proof-of-concept [Backstage plugin](/guides/namespace-provisioning-ui).
+
+## Package Orchestration Concepts
+
+Package Orchestration relies on the already familiar concepts of
+[**Package**](/book/02-concepts/01-packages)
+and [**Function**](/book/02-concepts/03-functions).
+
+Package Orchestrator supports several **lifecycle stages** of packages:
+* ***Draft*** - package is being created or edited. The package contents can be
+ modified but package is not ready to be used (deployed or cloned)
+* ***Proposed*** - author of the package proposed that the package be published
+* ***Published*** - the changes to the package have been approved and the
+ package is ready to be used. Published packages can be deployed or cloned.
+
+A **Repository** containing kpt packages (for example a [git][] repository or
+an [OCI][] container registry) can be registered with the Package Orchestrator
+to enable package discovery or management.
+
+An [OCI][] container registry containing kpt functions can be registered with
+the Package Orchestrator to enable discovery of kpt functions.
+
+A repository containing *packages* can be designated as a
+***deployment repository***. *Published* packages in a deployment repository are
+considered deployment-ready.
+
+
+[git]: https://git-scm.org/
+[oci]: https://opencontainers.org/
+[config sync]: https://cloud.google.com/anthos-config-management/docs/config-sync-overview
+
+The following image illustrates how Package Orchestration fits into the overall
+configuration management ecosystem. Package Orchestration service enables
+management of packages in registered repositories and enables WYSIWYG UI
+experience of package authoring.
+A separate GitOps deployment mechanism (for example [Config Sync][]) is used to
+deploy published packages to realize the live state from the configuration and
+provides observability of the status of deployed resources.
+
+![Package Orchestration](/static/images/package-orchestration.svg)
+
+Dedicated user guides are available for the use of Porch with
+* the [Backstage UI](/guides/namespace-provisioning-ui)
+* the [kpt cli](/guides/porch-user-guide)
diff --git a/site/book/README.md b/site/book/README.md
index 005dd90c80..749c12c9f1 100644
--- a/site/book/README.md
+++ b/site/book/README.md
@@ -14,6 +14,7 @@ This book is organized as follows:
- [Chapter 5] guides you through developing custom functions.
- [Chapter 6] covers how to deploy a package to a Kubernetes cluster.
- [Chapter 7] covers effective customizations techniques.
+- [Chapter 8] covers package orchestration concepts and support in kpt toolchain.
Let's get started!
@@ -24,3 +25,4 @@ Let's get started!
[chapter 5]: /book/05-developing-functions/
[chapter 6]: /book/06-deploying-packages/
[chapter 7]: /book/07-effective-customizations/
+[chapter 8]: /book/08-package-orchestration/
diff --git a/site/guides/namespace-provisioning-cli.md b/site/guides/namespace-provisioning-cli.md
index ce19fef250..48103370c1 100644
--- a/site/guides/namespace-provisioning-cli.md
+++ b/site/guides/namespace-provisioning-cli.md
@@ -329,10 +329,10 @@ Now that we have a basic namespace package in place, let's publish it so that
other users can consume it.
```shell
-$cd .. && git add basens && git commit -am "initial pkg"
-$git push origin main
+$ cd .. && git add basens && git commit -am "initial pkg"
+$ git push origin main
-$git tag basens/v0 && git push origin basens/v0
+$ git tag basens/v0 && git push origin basens/v0
```
So, now the package should be available in the `blueprint` repo. Consumers
diff --git a/site/guides/porch-user-guide.md b/site/guides/porch-user-guide.md
index 25b062559c..cac4bf0feb 100644
--- a/site/guides/porch-user-guide.md
+++ b/site/guides/porch-user-guide.md
@@ -126,7 +126,7 @@ The command `kpt alpha repo unregister` can be used to unregister a repository:
```sh
# Unregister a repository
-$ kpt alpha repo unregister deployments
+$ kpt alpha repo unregister deployments --namespace default
```
## Package Discovery And Introspection
diff --git a/site/guides/wysiwyg.svg b/site/guides/wysiwyg.svg
deleted file mode 100644
index bde9048d8e..0000000000
--- a/site/guides/wysiwyg.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/site/sidebar.md b/site/sidebar.md
index 3ca3c4db8c..f83c8a4158 100644
--- a/site/sidebar.md
+++ b/site/sidebar.md
@@ -34,6 +34,7 @@
- [7.1 Single Value Replacement](book/07-effective-customizations/01-single-value-replacement.md)
- [7.2 Limiting Package Changes](book/07-effective-customizations/02-limiting-package-changes.md)
- [7.3 Generation](book/07-effective-customizations/03-generation.md)
+ - [8 Package Orchestration](book/08-package-orchestration/)
- [Reference](reference/)
- [Annotations](reference/annotations/)
- [apply-time mutation](reference/annotations/apply-time-mutation/)
diff --git a/site/static/images/package-orchestration.svg b/site/static/images/package-orchestration.svg
new file mode 100644
index 0000000000..2650dbb29a
--- /dev/null
+++ b/site/static/images/package-orchestration.svg
@@ -0,0 +1 @@
+
\ No newline at end of file