Publishing Apps
Learn how to package and publish your robot applications to the Garage registry
Publishing your robot application is a straightforward process. You can either use the web interface or the CLI tool.
CLI Tool
Use the command line for automated publishing
Requirements
Package Structure
Your app must include a garage.yaml configuration file
Documentation
Include a README.md with clear usage instructions
Archive Format
Package as a .tar.gz file containing all necessary files
garage.yaml Configuration
Every app must include a garage.yaml file with the following structure:
name: my-robot-app
version: 1.0.0
description: "A sample robot navigation application"
author: "Your Name"
tags:
- navigation
- autonomous
- ros2
# ROS2 configuration
ros:
distro: humble
packages:
- my_robot_nav
- my_robot_msgs
# Docker configuration (optional)
docker:
base_image: "ros:humble"
ports:
- "8080:8080"
# Dependencies
dependencies:
system:
- libopenapps-dev
python:
- numpy
- scipy
# Entry points
launch:
main: "ros2 launch my_robot_nav navigation.launch.py"
gui: "ros2 run my_robot_nav gui_node"Publishing Process
1. Prepare Your App
• Create your garage.yaml configuration file
• Write comprehensive README documentation
• Test your application thoroughly
• Package everything into a .tar.gz archive
2. Choose Publishing Method
- 1. Visit the publish page
- 2. Fill in app details (name, version, description)
- 3. Add relevant tags
- 4. Upload your .tar.gz package
- 5. Click "Publish App"
garage login
# Publish from current directory
garage publish
# Or specify a package
garage publish my-app.tar.gz
3. Verification & Review
• Your app will be automatically validated
• Basic security and structure checks are performed
• If successful, your app appears in the registry immediately
• Users can discover, download, and review your app
Best Practices
• Write clear, comprehensive README files
• Include usage examples and screenshots
• Document all dependencies and requirements
• Provide troubleshooting guidance
• Use semantic versioning (major.minor.patch)
• Increment major version for breaking changes
• Increment minor version for new features
• Increment patch version for bug fixes
• Test your app on different systems
• Handle edge cases and errors gracefully
• Follow ROS2 best practices
• Keep dependencies minimal and well-documented
• Choose descriptive, relevant tags
• Respond to user feedback and issues
• Keep your apps updated and maintained
• Engage with the community
Ready to Publish?
Start sharing your robot applications with the community today.