diff --git a/changelog.mdx b/changelog.mdx
index bff7a8c..6ebf7cc 100644
--- a/changelog.mdx
+++ b/changelog.mdx
@@ -22,6 +22,19 @@ export const STAGE_SELF_MANAGED_M66 = "$0.0001";
agentsfleet is in **stealth-mode testing** and pre-production. APIs and agent behavior may change between releases without long deprecation windows. Email [agentsfleet@agentmail.to](mailto:agentsfleet@agentmail.to) if you want a hand calibrating an agent or to join as a design partner.
+
+ ## Add a workspace template from the dashboard
+
+ The Fleets install gallery now has **Add template**, so workspace owners can onboard a GitHub-hosted template without leaving the dashboard. Enter `owner/repo`; the dashboard validates the required `SKILL.md`, adds the workspace template, and returns you to the gallery where it installs like any other template.
+
+ ## What's new
+
+ - **Dashboard onboarding** — **Add template** accepts a GitHub repository, calls the workspace template onboarding API, and refreshes the gallery after the template is accepted.
+ - **Empty states** — empty Fleets and Events views now use simple "No ... found" copy, with direct links to install or create the next template.
+ - **Models navigation** — the dashboard nav now labels the page **Models**, and **Bring your own key** uses the same primary button style as **Install fleet**.
+ - **Route motion** — dashboard route changes no longer wobble; loading states rely on the spinner.
+
+
## Slack: mention @agentsfleet in a channel, get an answer in the thread
diff --git a/fleets/install.mdx b/fleets/install.mdx
index 9b617fa..8375bf7 100644
--- a/fleets/install.mdx
+++ b/fleets/install.mdx
@@ -27,10 +27,11 @@ agentsfleet install --template github-pr-reviewer --name pr-reviewer-frontend
## Authoring your own fleet
-There is no local-directory install. To run a fleet you wrote yourself, **onboard** its `SKILL.md` + `TRIGGER.md` as a template first, then install it by id. Onboarding happens through the dashboard or the API — there is no CLI onboard command:
+There is no local-directory install. To run a fleet you wrote yourself, **onboard** its `SKILL.md` as a template first, then install it by id. `TRIGGER.md` is optional. Onboarding happens through **Add template** in the dashboard or the API — there is no CLI onboard command:
-- **Platform tier** (visible to every workspace) — `POST /v1/admin/fleet-templates`.
+- **Dashboard** — open **Fleets → Install fleet**, click **Add template**, and enter the GitHub repository as `owner/repo`.
- **Workspace tier** (visible only to your workspace) — `POST /v1/workspaces/{workspace_id}/fleet-templates`.
+- **Platform tier** (visible to every workspace) — `POST /v1/admin/fleet-templates`.
Onboarding is where the platform parses and validates your frontmatter; a malformed `SKILL.md` / `TRIGGER.md` is rejected there with a `UZ-AGT-*` wire code. Once onboarded, the template shows up in `agentsfleet templates` (platform tier) or your workspace gallery, and you install it the same way as any catalogue template:
diff --git a/fleets/templates.mdx b/fleets/templates.mdx
index f8e132d..b0eeeea 100644
--- a/fleets/templates.mdx
+++ b/fleets/templates.mdx
@@ -8,7 +8,7 @@ A **template** is a pre-built fleet you install in one command, `agentsfleet ins
- The **platform catalogue** — curated templates hosted by agentsfleet, browsable with `agentsfleet templates` and installed by id.
- Your **workspace's own templates** — tenant templates onboarded into your workspace; once they appear in your gallery they install by the same `--template `.
-There is no `install --from ` — installing a fleet is always by template id. To run a fleet you authored, onboard it as a template first (via the dashboard or API), then `install --template `. To push local edits to an *already-installed* fleet, use `agentsfleet fleet update --from ` (see [below](#editing-an-installed-fleet-from-a-local-directory)).
+There is no `install --from ` — installing a fleet is always by template id. To run a fleet you authored, onboard it as a template first (via **Add template** in the dashboard or the API), then `install --template `. To push local edits to an *already-installed* fleet, use `agentsfleet fleet update --from ` (see [below](#editing-an-installed-fleet-from-a-local-directory)).
New here? The [Quickstart](/quickstart) runs the `github-pr-reviewer` template end to end — browse, add the credential, install, register the webhook, and watch it react to a real pull request.
@@ -31,6 +31,14 @@ zoho-sprint-daily-summarizer Zoho Sprints daily summarizer zoho
Each row shows the template id, its name, and the credentials it needs. Wire those into the workspace vault (see [Credentials](/fleets/credentials)) before or after install. Pass `--json` for the full metadata — declared tools, network hosts, and `required_credentials_reasons`, a per-credential map of display-only "why this fleet needs it" copy the dashboard install gate renders. The reasons are purpose text only; install validation reads `required_credentials`, never the reasons.
+## Add a workspace template from the dashboard
+
+Use **Add template** when you have a GitHub repository you want to install from your workspace gallery. In the dashboard, open **Fleets → Install fleet**, click **Add template**, and enter the repository as `owner/repo`.
+
+The repository root must contain `SKILL.md`; `TRIGGER.md` is optional. agentsfleet fetches the files, validates the frontmatter described in [Authoring a fleet](/fleets/authoring), and adds the result to your workspace gallery. After the dialog closes, the template appears next to the platform catalogue and installs by id.
+
+The dashboard adds workspace-tier templates only. Platform-tier onboarding remains `POST /v1/admin/fleet-templates`.
+
## Install from the catalogue
Install a catalogue template by its id:
@@ -56,7 +64,7 @@ Without `--name`, the fleet takes the template's own `name:`. Installing the sam
## Editing an installed fleet from a local directory
-There is no `agentsfleet install --from ` — installing a *new* fleet is always by template id (`--template `), resolved from your workspace gallery. To run a fleet you authored locally, onboard it as a template (dashboard or API), then install it from the [catalogue](#install-from-the-catalogue).
+There is no `agentsfleet install --from ` — installing a *new* fleet is always by template id (`--template `), resolved from your workspace gallery. To run a fleet you authored locally, onboard it as a template with [Add template](#add-a-workspace-template-from-the-dashboard) or the API, then install it from the [catalogue](#install-from-the-catalogue).
You can still push local `SKILL.md`/`TRIGGER.md` edits to an **already-installed** fleet:
@@ -68,7 +76,7 @@ This overrides the live fleet's instructions from the directory (a `SKILL.md` is
## Writing your own
-A template is just a directory with `SKILL.md` and `TRIGGER.md`. See [Authoring a fleet](/fleets/authoring) for the file references. To iterate on an installed fleet from your working directory:
+A template is a GitHub repository or directory with a root `SKILL.md`; `TRIGGER.md` is optional. See [Authoring a fleet](/fleets/authoring) for the file references. To create one for the dashboard, commit those files to GitHub, then use [Add template](#add-a-workspace-template-from-the-dashboard) with `owner/repo`. To iterate on an installed fleet from your working directory:
```bash
agentsfleet fleet update --from .