Publish Your Package

Share your HORUS packages with the community

How to Publish

1. Authenticate with GitHub

$horus auth login --github

This will open your browser to authorize with GitHub. After authorization, you'll receive an API key.

2. Save Your API Key

Save the API key to ~/.horus/auth.json:

$mkdir -p ~/.horus
$echo '{"api_key": "YOUR_KEY_HERE"}' > ~/.horus/auth.json

3. Create Your Package

Use horus new to create a new package with the manifest file:

$horus new my-package --rust

This creates a new package directory with a horus.yaml manifest file:

name: my-package
version: 0.1.0
description: Your package description
author: your-github-username
license: MIT
language: rust
horus_id: null
dependencies:
- horus@0.1.0

The horus_id will be auto-generated on first publish.

Adding Documentation

Create a docs/ folder in your package root to include documentation:

$mkdir docs

The docs/ folder should only contain Markdown (.md) files. Common documentation files include:

  • docs/getting-started.md
  • docs/api.md
  • docs/examples.md

4. Publish!

$horus pkg publish

The publish command will interactively guide you through:

  • Categories - Select package categories (Navigation, Vision, Perception, Control, Manipulation, Communication, Simulation, App, Utilities)
  • Documentation - Choose to link external docs or bundle local docs/ folder
  • Source Repository - Add link to your GitHub/GitLab repository (auto-detected if in git repo)

Your package will be uploaded to the registry and appear in the marketplace!

Package Requirements

  • Valid horus.yaml manifest file
  • Authenticated with GitHub OAuth
  • Unique package name (not already published)
  • Package tarball (.tar.gz) containing all source files

Documentation & Source Links

During horus pkg publish, you'll be prompted to add:

  • Documentation (optional):
    • External: Link to docs site (GitHub Pages, Read the Docs, etc.)
    • Local: Bundle Markdown files from docs/ folder
  • Source Repository (optional): Link to GitHub/GitLab (auto-detected from git remote)