Home

Awesome

<div align="center"> <a href="https://github.com/ipvm-wg/homestar" target="_blank"> <img src="https://raw.githubusercontent.com/ipvm-wg/homestar/main/assets/mascot_full_transparent.png" alt="Homestar logo" width="400"></img> </a> <h1 align="center">Homestar</h1> <p> <a href="https://crates.io/crates/homestar-invocation"> <img src="https://img.shields.io/crates/v/homestar-invocation?label=crates" alt="Crate"> </a> <a href="https://crates.io/crates/homestar-runtime"> <img src="https://img.shields.io/crates/v/homestar-runtime?label=crates" alt="Crate"> </a> <a href="https://crates.io/crates/homestar-wasm"> <img src="https://img.shields.io/crates/v/homestar-wasm?label=crates" alt="Crate"> </a> <a href="https://crates.io/crates/homestar-workflow"> <img src="https://img.shields.io/crates/v/homestar-workflow?label=crates" alt="Crate"> </a> <a href="https://codecov.io/gh/ipvm-wg/homestar"> <img src="https://codecov.io/gh/ipvm-wg/homestar/branch/main/graph/badge.svg?token=SOMETOKEN" alt="Code Coverage"/> </a> <a href="https://github.com/ipvm-wg/homestar/actions/workflows/tests_and_checks.yml"> <img src="https://github.com/ipvm-wg/homestar/actions/workflows/tests_and_checks.yml/badge.svg" alt="Tests and Checks Status"> </a> <a href="https://github.com/ipvm-wg/homestar/actions/workflows/docker.yml"> <img src="https://github.com/ipvm-wg/homestar/actions/workflows/docker.yml/badge.svg" alt="Build Docker Status"> </a> <a href="https://github.com/ipvm-wg/homestar/actions/workflows/audit.yml"> <img src="https://github.com/ipvm-wg/homestar/actions/workflows/audit.yml/badge.svg" alt="Cargo Audit Status"> </a> <a href="https://github.com/ipvm-wg/homestar/blob/main/LICENSE"> <img src="https://img.shields.io/badge/License-Apache%202.0-blue.svg" alt="License"> </a> <a href="https://docs.rs/homestar-invocation"> <img src="https://img.shields.io/static/v1?label=Docs&message=invocation.docs.rs&color=pink" alt="Docs"> </a> <a href="https://docs.rs/homestar-runtime"> <img src="https://img.shields.io/static/v1?label=Docs&message=runtime.docs.rs&color=pink" alt="Docs"> </a> <a href="https://docs.rs/homestar-wasm"> <img src="https://img.shields.io/static/v1?label=Docs&message=wasm.docs.rs&color=pink" alt="Docs"> </a> <a href="https://docs.rs/homestar-workflow"> <img src="https://img.shields.io/static/v1?label=Docs&message=workflow.docs.rs&color=pink" alt="Docs"> </a> <a href="https://fission.codes/discord"> <img src="https://img.shields.io/static/v1?label=Discord&message=join%20us!&color=mediumslateblue" alt="Discord"> </a> </p> </div>

Outline

Quickstart

If you're looking to help develop Homestar, please dive right into our development guide.

Otherwise, the easiest way to get started and see Homestar in action is to follow-along with our examples. To start, try out our image-processing websocket relay example, which integrates Homestar with a browser application to run a statically-configured workflow. The associated README.md walks through what to install (i.e. rust, node/npm, ipfs), what commands to run, and embeds a video demonstrating its usage.

Throughout the Homestar ecosystem and documentation, we'll draw a distinction between the host runtime and the support for different guest languages and bindings.

If you're mainly interested in learning how to write and build-out Wasm components (currently focused on authoring in Rust), please jump into our homestar-functions directory and check out our examples there.

Packages

Each Homestar release will also build packages for distribution across different platforms.

Running Examples

All examples contain instructions for running them, including what to install and how to run them. Please clone this repo, and get started!

Each example showcases something specific and interesting about Homestar as a system.

Our current list includes:

Workspace

This repository is comprised of a few library packages and a library/binary that represents the Homestar runtime. We recommend diving into each package's own README.md for more information when available.

Core Crates

Runtime Crate

Non-published Crates

homestar-schemas is a crate for generating OpenRPC docs and JSON Schemas that document the homestar-runtime JSON-RPC API, workflows, and receipts.

Contributing

:balloon: We're thankful for any feedback and help in improving our project! We have a focused development guide, as well as a more general contributing guide to help you get involved. We always adhere to our Code of Conduct.

Releases and Builds

Crates, Tags, and GitHub Releases

Homestar uses release-plz to publish crates, tags, changelogs, and GitHub Releases. Upon merging, a release-plz bot PR, four crates are continuously published, all tied to the same cargo version currently (though this may change in the future):

Build Targets

Every GitHub release of the homestar-runtime contains build assets for running the homestar-runtime on different target architectures, as well as DEB and RPM packages (tagged with the architectured they were compiled for). Our homebrew package for the runtime is also tied to releases and can be installed with brew install fission-codes/fission/homestar.

We also leverage cross for locally cross-compiling to varying Linux and Apple target platforms.

NPM Packages

We also release some of our cross-compiled runtime binaries as npm binary packages:

Getting Help

For usage questions, usecases, or issues reach out to us in our Discord channel.

We would be happy to try to answer your question or try opening a new issue on GitHub.

External Resources

License

This project is licensed under the Apache License 2.0, or http://www.apache.org/licenses/LICENSE-2.0.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.