Sphere v0.2.0: Introducing a Public Hub for Shareable, Sandboxed Commands

Clein PiusClein Pius
3 min read

Hey Dev Community! We're Clein, Kelly, and Ronald, the team behind Sphere.

A few weeks ago, we introduced Sphere v0.1 – a Rust-based CLI tool for running commands in isolated, portable sandboxes, born out of our experiences developing on mobile with Termux in Kenya. [https://dev.to/spheredevs/we-built-a-docker-alternative-in-rust-on-our-phones-in-kenya-heres-why-21c0].

Today, we're incredibly excited to launch Sphere v0.2.0, which takes a giant leap forward by introducing the SphereHub MVP!

What is the SphereHub?

Imagine a world where any script, tool, or simple utility you write can be easily shared with others, and where you can just as easily pull in tools built by the community, all with guarantees of isolation and integrity. That's the vision behind SphereHub.

With v0.2.0, Sphere is no longer just a local tool. It's the beginning of an ecosystem.

How It Works:

1. Publishing Your Sphere (Sharing is Caring!)

Got a cool .sphere file that automates a task or provides a useful utility? You can now prepare it for the public SphereHub with our new command:

bash

sphere publish ./my-utility.sphere

This command doesn't directly upload (for security and moderation in this MVP stage). Instead, it:

Validates your .sphere file (ensuring it has an id).

Prompts you for metadata like author and description.

Calculates a SHA256 hash of your file's content.

Then, it gives you clear, step-by-step instructions on how to create a Pull Request to our central, GitHub-based registry: https://github.com/Nakadra/sphere-hub-registry.

Once your PR is merged, your Sphere is "live"!

2. Consuming Public Spheres (Effortless Dependencies!)

This is where the magic happens. Let's say someone published a Sphere with the ID com.community.super-formatter/v1.0.0. You can now use it in your own my-project.sphere like this:

# my-project.sphere

id = "com.me.my-project/v1"

entrypoint = "echo 'Formatting code...'; formatter my-code.txt; echo 'Done!'"

[dependencies]

formatter = "com.community.super-formatter/v1.0.0"

When you run sphere run my-project.sphere:

Sphere checks your local cache.

If com.community.super-formatter/v1.0.0 isn't there, it automatically fetches the master index from the SphereHub.

It downloads the super-formatter .sphere file.

Crucially, it verifies the downloaded file's SHA256 hash against the one listed in the Hub's index. This ensures you're running exactly what was published, with no tampering.

It caches the dependency locally and then runs your project!

Why This Matters

Simplicity: No complex package management configurations. Just list your dependency ID.

Security: Hash verification provides a strong guarantee of integrity.

Portability: Because every Sphere runs in its own sandbox, dependencies "just work."

Community: We're laying the groundwork for a rich ecosystem of reusable computational building blocks.

Try It Out!

Sphere v0.2.0 is available now on GitHub:

https://github.com/Nakadra/sphere-runtime/releases/tag/v0.2.0

The SphereHub registry is young and needs your contributions to grow:

https://github.com/Nakadra/sphere-hub-registry

We're still very early in this journey, and your feedback is more valuable than ever. What do you think of the SphereHub concept? What tools would you like to see published?

Join our Discord Server to chat with us!

Thanks for reading!

Clein, Kelly, & Ronald

Join our discord community `[https://discord.gg/ZnUCaUGr]

0
Subscribe to my newsletter

Read articles from Clein Pius directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Clein Pius
Clein Pius