diff --git a/README.md b/README.md index af201609..0ecee100 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,15 @@ ![logo light](assets/logo-light.svg#gh-light-mode-only) ![logo dark](assets/logo-dark.svg#gh-dark-mode-only) -[![Docs](https://img.shields.io/badge/docs-latest-success)](https://docs.exosphere.host) -[![Last commit](https://img.shields.io/github/last-commit/exospherehost/exospherehost)](https://github.com/exospherehost/exospherehost/commits/main) -[![PyPI - Version](https://img.shields.io/pypi/v/exospherehost)](https://pypi.org/project/exospherehost/) -[![Coverage](https://img.shields.io/codecov/c/gh/exospherehost/exospherehost)](https://codecov.io/gh/exospherehost/exospherehost) -[![Kubernetes](https://img.shields.io/badge/Kubernetes-native-326ce5?logo=kubernetes&logoColor=white)](https://github.com/orgs/exospherehost/packages?repo_name=exospherehost) -[![Discord](https://badgen.net/discord/members/V8uuA6mmzg)](https://discord.gg/V8uuA6mmzg) -![Stars](https://img.shields.io/github/stars/exospherehost/exospherehost?style=social) +

+ Docs + Last commit + PyPI - Version + Coverage + Kubernetes + Discord + Stars +

--- @@ -107,6 +109,17 @@ You can also visit the [official documentation site](https://docs.exosphere.host +## Open Source Commitment + +We believe that humanity would not have been able to achieve the level of innovation and progress we have today without the support of open source and community, we want to be a part of this movement and support the open source community. In following ways: + +1. We will be open sourcing majority of our codebase for exosphere.host and making it available to the community. We welcome all sort of contributions and feedback from the community and will be happy to collaborate with you. +2. For whatever the profits which we generate from exosphere.host, we will be donating a portion of it to open source projects and communities. If you have any questions, suggestions or ideas. +3. We would be further collaborating with various open source student programs to provide with the support and encourage and mentor the next generation of open source contributors. + +Please feel free to reach out to us at [nivedit@exosphere.host](mailto:nivedit@exosphere.host). Lets push the boundaries of possibilities for humanity together! + + ## Open Source Commitment We believe that humanity would not have been able to achieve the level of innovation and progress we have today without the support of open source and community, we want to be a part of this movement and support the open source community. In following ways: @@ -123,13 +136,5 @@ We welcome community contributions. For guidelines, refer to our [CONTRIBUTING.m ![exosphere.host Contributors](https://contrib.rocks/image?repo=exospherehost/exospherehost) -## Star History - - - - - Star History Chart - - diff --git a/docs/docs/index.md b/docs/docs/index.md index 9ac5f951..b732b9a9 100644 --- a/docs/docs/index.md +++ b/docs/docs/index.md @@ -1,14 +1,5 @@ # Exosphere Docs -
- - - - - Exosphere Logo - - -
Exosphere is an open-source infrastructure layer to run distributed AI workflows and agents with Python based on a node-based architecture. @@ -147,6 +138,113 @@ Runtime( The runtime will automatically reload and register the updated node. +### Create it + +Create a file `main.py` with: + +```python +from exospherehost import Runtime, BaseNode +from pydantic import BaseModel + +class HelloWorldNode(BaseNode): + class Inputs(BaseModel): + name: str + + class Outputs(BaseModel): + message: str + + class Secrets(BaseModel): + pass + + async def execute(self) -> Outputs: + return self.Outputs( + message=f"Hello, {self.inputs.name}!" + ) + +# Initialize the runtime +Runtime( + namespace="MyProject", + name="HelloWorld", + nodes=[HelloWorldNode] +).start() +``` + +### Run it + +Run the server with: + +```bash +uv run main.py +``` + +### Check it + +Your runtime is now running and ready to process workflows! + +### Interactive Dashboard + +Now go to your Exosphere dashboard to: + +* View your registered nodes +* Create and manage graph templates +* Trigger workflows +* Monitor execution states +* Debug and troubleshoot + +Ref: [Dashboard Guide](./exosphere/dashboard.md) + +## Example flow + +Now modify the file `main.py` to add more complex processing: + +```python +from exospherehost import Runtime, BaseNode +from pydantic import BaseModel +import json + +class DataProcessorNode(BaseNode): + class Inputs(BaseModel): + data: str + operation: str + + class Outputs(BaseModel): + result: str + status: str + + class Secrets(BaseModel): + api_key: str + + async def execute(self) -> Outputs: + # Parse the input data + try: + data = json.loads(self.inputs.data) + except: + return self.Outputs( + result="", + status="error: invalid json" + ) + + # Process based on operation + if self.inputs.operation == "transform": + result = {"transformed": data, "processed": True} + else: + result = {"original": data, "processed": False} + + return self.Outputs( + result=json.dumps(result), + status="success" + ) + +# Initialize the runtime +Runtime( + namespace="MyProject", + name="DataProcessor", + nodes=[DataProcessorNode] +).start() +``` + +The runtime will automatically reload and register the updated node. + ## Open Source Commitment @@ -164,13 +262,4 @@ We welcome community contributions. For guidelines, refer to our [CONTRIBUTING.m ![exosphere.host Contributors](https://contrib.rocks/image?repo=exospherehost/exospherehost) -## Star History - - - - - - Star History Chart - -