Publishing
Upload artifacts to a registry.
Manifest requirements
Your artifact needs a grekt.yaml. For full details on artifact structure, see Artifacts.
The required fields for publishing are:
name: "@your-scope/my-artifact"
version: 1.0.0
description: What this artifact does
keywords: # required (3-5)
- keyword1
- keyword2
- keyword3
license: "MIT" # optional
repository: "https://your-repo.com/you/my-artifact" # optionalThe name must include a scope (@scope/name). Your username is your scope, so if your username is masterchief, your artifacts are @masterchief/my-artifact.
license and repository are optional. When provided, they are shown on the artifact detail page in the registry.
KEYWORDS ARE REQUIRED
Publishing will fail without 3 to 5 keywords. They are used for indexing and discoverability. If you need help generating them, see Generating keywords.
Publish
grekt publish ./path/to/artifactThis publishes to the grekt public registry by default. No extra configuration needed. If you have multiple artifacts to manage, see Monorepo.
What happens
- Validates manifest - Checks required fields in
grekt.yaml - Creates tarball - Packages files into
.grekt/tmp/ - Checks uniqueness - Fails if version already exists
- Uploads - Sends to the registry
- Cleans up - Removes the temporary tarball
Pack only
To create a tarball without publishing, use grekt pack:
grekt pack ./my-artifact
# Output: .grekt/tmp/@author-my-artifact.tar.gzUseful for inspecting what gets packaged or distributing through other channels.
Custom registries
INFO
If you just want to publish to the grekt public registry, skip this section. Custom registries are only needed for self-hosted or platform-specific setups (GitLab, GitHub, etc).
grekt determines where to publish based on the scope in your artifact's name:
- Extracts scope from
name(e.g.,@myteamfrom@myteam/agent-tools) - Checks
.grekt/config.yamlfor a registry matching that scope - If found, publishes to that registry instead of the public one
To configure a custom registry:
grekt config registry set @scopeThis stores registry settings and tokens in .grekt/config.yaml (gitignored).
Example with GitLab:
# .grekt/config.yaml
registries:
"@myteam":
type: gitlab
project: myteam/artifacts# grekt.yaml
name: "@myteam/agent-tools" # → publishes to GitLab (@myteam registry)
version: 1.0.0For platform-specific setup, see GitLab or GitHub.
Generating keywords
If your manifest doesn't have keywords, you have several options:
Option 1: Add manually
Write keywords directly in your grekt.yaml.
Option 2: Ask your AI assistant
Ask your AI assistant: "Generate keywords for my artifact based on its description"
Option 3: Use grekt-keywords
A Python tool for generating keywords automatically:
pip install grekt-keywords --index-url https://download.pytorch.org/whl/cpu
grekt-keywords --json "Your artifact description here"The first run downloads a small ML model (~80MB). Subsequent runs work offline.
Monorepo
For publishing multiple artifacts from a single repository, see Monorepo.
Related
- grekt pack - Create tarball without publishing
- grekt publish - Command reference
- GitLab - GitLab registry setup
- Versioning - Version management
- Monorepo - Multiple artifacts in one repo