21 – Maintaining Galaxies and Stars
This guide is for maintainers of Cosmos Galaxies and package authors who want to build Stars (or Nebulae) that others can install.
🌟 Your Responsibilities
If you're maintaining a Galaxy or publishing Stars, you are expected to:
- Keep
meta.toml
up to date (names, versions, descriptions, star list) - Update or rebuild tarballs when package contents change
- Recalculate checksums if hashes are implemented
- Test packages before publishing them (install + uninstall)
- Use SemVer responsibly for Star versioning
- Use
YYYY.MM.DD
format for Galaxy versions inmeta.toml
- Consider archiving versions of your Galaxy for long-term reproducibility (3–6 months minimum is recommended)
If that sounds like a lot of work—it is. Cosmos assumes you take ownership seriously.
⚙️ Creating a Star
Use stellar new-star <name>
to scaffold a new package:
- Edit
star.toml
to define name, version, and dependencies - Add an
install.sh
ornova.lua
script - Place files in a
files/
directory relative to the star
Then:
stellar build-star ./your-package
This creates a .tar.gz
that installs under Cosmos.
✨ Making a Nebula
A Nebula is a dependency-only Star:
name = "core-stack"
type = "nebula"
version = "1.0.0"
[dependencies]
musl = "^1.2.4"
busybox = "^1.36"
Nebulae should have no source
, no install_script
, and no files/
.
📄 Structuring a Galaxy
# meta.toml
name = "core"
description = "Minimal bootable stack"
version = "2024.04.17"
stars = ["musl", "busybox", "zlib"]
core-galaxy/
├── meta.toml
├── stars/
│ ├── musl.toml
│ ├── busybox.toml
│ └── zlib.toml
├── packages/
│ ├── musl-1.2.4.tar.gz
│ └── busybox-1.36.0.tar.gz
You can host this via:
- S3 (static file bucket)
- GitHub Pages
- Any static HTTP server
- A USB stick you left plugged in since last fall
❌ Common Mistakes
- Forgetting to bump versions after a change
- Publishing a tarball with the wrong contents
- Mismatching star name vs filename
- Forgetting to update
meta.toml
- Publishing a Galaxy without testing anything
Cosmos won’t stop you. But it will laugh quietly when your Galaxy breaks.
🚀 Release Checklist
- [ ] Does every Star have a valid
star.toml
? - [ ] Are the tarballs named correctly?
- [ ] Is
meta.toml
version bumped? - [ ] Are dependencies valid?
- [ ] Can everything install cleanly with no internet?
- [ ] Has this Galaxy been archived or tagged in Git for historical reference?
If yes: congratulations. You made a Galaxy.
If no: go fix it before someone files a bug at 3AM.
🤖 Publishing and Hosting Tips
- Use Git tags for Galaxy versions (
core-2024.04.17
) - Pin Galaxy metadata to specific Star versions
- Use symlinks for "latest"
- Mirror Galaxies to USB, IPFS, Git, or whatever works for your threat model
Maintaining Galaxies is an act of service. Do it well, or don’t do it at all.