Source: https://crabglamp.com/docs/glamphub/tutorial/publish-your-first-glamp
Last updated: 2026-06-09
Type: tutorial

A glamp is a tarball plus metadata that describes a reproducible dev environment. You author one on an Agent (because that is where the environment lives), then publish it so anyone can adopt it on their own Agent.

This tutorial requires a running Agent. If you have not done that, complete [Get started with Agents](/docs/agents/tutorial/get-started) first.

## Initialize the glamp on your Agent

Open the Agent's code-server tab and open a terminal. Run:

```sh
crabglamp glamp init
```

The CLI prompts for:

- **Name** — kebab-case, your-glamp-name. Together with your account slug this becomes `crabglamp.com/{your-slug}/{name}`.
- **Display name** — human-readable label shown on the public page (free-form).
- **Description** — one sentence describing what the environment provides.
- **Tags** — comma-separated kebab-case labels used for search.

The command writes `~/glamp.json` to the Agent's home directory. The manifest is the source of truth for what the published glamp will carry. The `glampId` field is left blank; CrabGlamp fills it in on your first publish so subsequent publishes update the same glamp.

## Curate what gets staged

The publisher walks the Agent home directory and includes every file by default, minus a fixed set of platform exclusions (conversation history, memory, credentials, platform state under `.openclaw/` — those cannot be overridden). To exclude additional paths of your own, write a `~/.glampignore` at the root:

```text
# ~/.glampignore
node_modules/
.venv/
__pycache__/
*.pyc
.env
.env.*
secrets/
```

The format mirrors `.gitignore`. A default `.glampignore` is shipped on first boot — open it and customize it. The maximum compressed tarball size is 500 MB; the publisher fails up front if your staging exceeds that.

## Stage and review

Back in the Agent, open the dashboard's **GlampHub** section. Click **Publish a glamp**. The dashboard opens the setup form, which mirrors the manifest fields and adds a versioning selector.

Click **Stage**. The Agent's publisher walks your home directory, applies `.glampignore`, computes file hashes, and produces a staging report:

- File count and total bytes.
- Per-extension breakdown.
- Files flagged as likely credentials. The scan inspects file *contents* with TruffleHog (a secret-detection scanner), not filenames — so a secret embedded in a config or script is caught even without a giveaway name.

The dashboard renders the staging report and pauses. Review the credential warnings — anything legitimate stays; anything sensitive gets added to `.glampignore` and you re-stage.

## Publish the public version

Once the staging report looks right, click **Publish**. The Agent uploads the tarball straight to object storage (the bytes never pass through CrabGlamp's control plane), then finalizes the version, and your glamp is live at:

```text
https://crabglamp.com/{your-account-slug}/{glamp-name}
```

The public page shows the manifest, the readme rendered as HTML, a file browser, and a one-click "Adopt this glamp" button that creates a new Agent from the tarball.

## Update or unpublish

To ship a new version, edit any file in the glamp, then stage and publish again from the dashboard. Each publish creates a new version, and the version number is incremented for you. The previous version stays addressable at its version URL.

To unpublish, delete the glamp from your account's GlampHub list. The published files are removed from object storage; previously-fetched tarballs already on other Agents continue to work.

## What is next

Read [the GlampHub reference](/docs/glamphub/reference) for the manifest schema, `.glampignore` syntax, and the publish API. To update an already-published glamp, follow [Update a published glamp](/docs/glamphub/how-to/update-a-published-glamp). To author a `.glampignore` from scratch, see [Add a glampignore](/docs/glamphub/how-to/add-a-glampignore).
