Satellite
Satellite is the core building blocks for exosphere. They are lego blocks designed for a specific purpose: you can connect them together to create complex systems in a matter of minutes without worrying about the underlying infrastructure.
They are pre-implemented serverless functions highly optimized for workflows and high volume batch processing, optimized for cost, reliability, developer velocity and ease of use. Our inhouse optimization for workflows and batch processing can lead to significant cost savings, for example you can expect a cost per token saving of about 50-75% on LLMs like DeepSeek R1 70B, Gemma 3 27B, etc.
How to use
There are multiple ways to use satellites and depends upon the interface provided by the satellite. Usually you can either use the satellite as a standalone function or you can use it as a part of a cluster (think a group or workflow of satellites for a specific purpose).
Cluster based execution
Our model of satellite based execution delivers the best value when grouped together with multiple other satellites for a specific purpose. For example you can create a cluster of satellites to parse a resume, understand financial reports, generating synthetic data, and more.
To use with cluster you need pass satellite parameter to cluster YML
file, API or SDK. For example to use satellite/exospherehost/deepseek-r1-distrill-llama-70b
in a cluster you would need to pass the following to the cluster YML
file:
sla: "6h"
cluster:
satellites:
- name: DeepSeek R1 Distrill Llama 70B
uses: satellite/exospherehost/deepseek-r1-distrill-llama-70b
identifier: deepseek-r1-distrill-llama-70b
config:
max_tokens: 1000
temperature: 0.5
input:
prompt: Hello, how are you?
Check cluster documentation for more details on how to use satellites in a cluster, further APIs and SDKs would be available soon.
API based execution
Usually API based satellite signature would be something like this:
curl -X POST https://api.exosphere.host/v1/satellites/<unique-project-name>/<unique-satellite-name>/ \
-H "Authorization: <your-api-key>" \
-H "Content-Type: application/json" \
-d '{
"input": {
"prompt": "Hello, how are you?"
},
"config": {
"max_tokens": 1000,
"temperature": 0.5
},
"sla": "6h"
}'
This will return a JSON response with output schema as follows:
{
"execution_id": "<uuid-execution-id>",
"sla": "6h",
"status": "pending",
"created_at": "<timestamp-creation>",
"updated_at": "<timestamp-last-update>",
"output": null,
"error": null,
"retries": 0
}
Further you can poll the status and result of the execution using API execution similar to this:
curl -X GET https://api.exosphere.host/v1/satellites/<unique-project-name>/<unique-satellite-name>/<uuid-execution-id>/ \
-H "Authorization: <your-api-key>"
-H "Content-Type: application/json"
{
"execution_id": "<uuid-execution-id>",
"sla": "6h",
"status": "completed",
"created_at": "<timestamp-creation>",
"updated_at": "<timestamp-last-update>",
"output": {
"response": "Hello, how are you?"
},
"error": null,
"retries": 0
}
SDK based execution
We are working on SDKs for different programming languages to make it easier to use satellite like Python, JavaScript, Go, etc. These would be available soon on our github further on various package managers like pip
, npm
, go get
, etc.
Available Exosphere Satellites
Following are the list of satellites which are currently available to private-beta
developers.
Satellite Name | Description | Documentation |
---|---|---|
exospherehost/deepseek-r1-distrill-llama-70b |
Batch inference for DeepSeek R1 Distrill Llama 70B (upto 75% cost savings) | Read more |
exospherehost/get-files |
Get files from cloud storages | Read more |
exospherehost/parse-with-docling |
Parse documents with Docling (PDFs, Word, Images, etc) | Read more |
exospherehost/call-webhook |
Call Webhook (POST, PUT, PATCH, GET, DELETE, etc) | Read more |
exospherehost/forward-logs |
Forward logs to NewRelic, LogZ, Dynatrace etc. | Read more |
exospherehost/move-file |
Move files within cloud storages (S3, GCS, etc) | Read more |
exospherehost/send-alert |
Send alert to Slack, PagerDuty, etc. | Read more |
exospherehost/send-email |
Send email (SMTP, SendGrid, SES, SendInBlue, etc) | Read more |
Types of Satellites
We are working on following broad types of satellites (Currently exosphere-satellites
are only available to the private-beta
users, we are working on making other categories of satellites available to the community):
exosphere-satellites
These are the satellites which are built by exosphere team and are available to the community. Initially we will be focusing on building satellites for AI workflows and agents. These would be available under the namespace satellite/exospherehost/<unique-satellite-name>
for example satellite/exospherehost/deepseek-r1-distrill-llama-70b
.
community-satellites
These are the satellites which are built by the community and are available to the community. There would be available under the namespace satellite/<unique-project-name>/<unique-satellite-name>
for example satellite/aikinclub/parse-resume
. Developers would be able to create them using our ongoing work on orbit
SDK, once verified and approved they would be available for the community to use. More details on orbit
SDK, how to create these satellites and how to add to exosphere ecosystem would be available soon.
custom-satellites
These are the satellites which are built by the user and is available as per the permission boundary set by the user. These would also follow naming convention of satellite/<unique-project-name>/<unique-satellite-name>
for example satellite/aikinclub/send-whatsapp-message
, however only cluster/satellite running in the same namespace would be able to access these satellites. Similar to community-satellites
developers would be able to create them using our ongoing work on orbit
SDK, however they would be available within the project namespace and would not require any approval.
configured-satellites
These are the satellites with additional configuration added to the existing pre-implemented satellites or custom satellites. These would also follow naming convention of satellite/<unique-project-name>/<unique-satellite-name>
for example satellite/aikinclub/send-whatsapp-message
, however only cluster/satellite running in the same namespace would be able to access these satellites. Creating these would be much easier, essentially you would be able to create a new satellite by configuring an existing satellite through a simple UI or API call, details on how to do this would be available soon.