66 releases (10 breaking)
| new 0.11.5 | Dec 26, 2025 |
|---|---|
| 0.10.9 | Dec 16, 2025 |
| 0.10.5 | Nov 27, 2025 |
| 0.5.0 | Jul 18, 2025 |
| 0.1.0 | Mar 20, 2025 |
#141 in Procedural macros
26 downloads per month
245KB
5.5K
SLoC
Kinetics
Kinetics is a hosting platform for Rust applications that allows deploying all types of workloads by writing only Rust code.
#[endpoint(url_path = "/my-rest-endpoint", environment = {"SOME_VAR": "SomeVal"})]
pub async fn endpoint(
_event: Request<()>,
_secrets: &HashMap<String, String>,
_config: &KineticsConfig,
) -> Result<Response<Body>, BoxError> {
let resp = Response::builder()
.status(200)
.header("content-type", "text/html")
.body("Hello!".into())?;
Ok(resp)
}
#[cron(schedule = "rate(1 hour)")]
pub async fn cron(
_secrets: &HashMap<String, String>,
_config: &KineticsConfig,
) -> Result<(), BoxError> {
println!("Started cron job");
Ok(())
}
#[worker(fifo = true)]
pub async fn worker(
records: Vec<QueueRecord>,
_secrets: &HashMap<String, String>,
_config: &KineticsConfig,
) -> Result<QueueRetries, BoxError> {
let mut retries = QueueRetries::new();
println!("Got records: {records:?}");
Ok(retries)
}
Check out more examples here. Including REST API endpoints, queue workers, and cron jobs.
Features
🦀 Only Rust code
Just apply attribute macro to your function, and Kinetics will handle the rest. No other tools required.
🚀 Any workload
Deploy REST API endpoints, queue workers, and cron jobs.
🏕️ Works offline
Run your functions locally, with no connection to the internet. Requests to DB and queues are served locally as well.
💿 Comes with DB
For every project we provision a DB, with connection string being added to function config automatically.
📥 Comes with queues
When you launch a worker function, we automatically provision its queue. Other functions access the queue by simply importing the worker function.
🔑 Secrets
Automatically provision secrets from .env.secrets file or KINETICS_SECRET_* environment variables and make them available in your functions.
📚 Logs
Monitor your functions with just CLI. Each function gets its own stream of logs.
🤖 No infrastructure management
The infrastructure is always provisioned automatically.
Getting started
# 1. Install
cargo install kinetics
# 2. Login or sign up, you will receive auth code to this email
kinetics login <email>
# 3. Init a project from template
kinetics init test; cd test
# 4. Call the function locally
kinetics invoke BasicEndpointEndpoint
# 5. Deploy the entire project to the cloud
kinetics deploy
# 6. Alternatively you can deploy only selected functions
kinetics deploy BasicCronCron,BasicWorkerWorker
# 7. Faster way, but you lose rollbacks
kinetics deploy --hotswap BasicCronCron
Kinetics is currently in ⚠️ active development and may contain bugs or result in unexpected behavior. The service is free for the first 100,000 invocations of your functions, regardless of the type of workload.
If you have any issues, please contact us at support@kineticscloud.com.
Documentation
Kinetics supports several types of workloads(functions): endpoint, worker, and cron.
Endpoint
A REST API endpoint. The following attribute macro parameters are available:
url_path: The URL path of the endpoint.environment: Environment variables.
Worker
A queue worker. When deployed, a corresponding queue gets provisioned automatically.
concurrency: Max number of concurrent workers.fifo: Set to true to enable FIFO processing.environment: Environment variables.
Cron
A regular job.
schedule: We support these types of expressions.environment: Environment variables.
Env vars
A macro for any type of workload accepts JSON array with environment variables.
Secrets
Store secrets in .env.secrets file in the root directory of your crate. Kinetics will automatically pick it up and provision to all of your workloads in the second parameter of the function as HashMap<String, String>.
Alternatively store the secrets in environment variables starting with KINETICS_SECRET_. This way might be more suitable for CI/CD environments.
Database
We automatically provision one SQL DB for each project. Also kinetics invoke --with-db [Function name] will automatically provision DB locally and replace the connection string with local endpoint.
You can then interact with it like you normally interact with DynamoDB, example.
Examples
Try in examples/ dir. These are the most frequently used commands with examples of input params.
Print out all available functions before deployment. Their names and URLs of REST API endpoints:
kinetics func list
Invoke a function locally with parameters. --payload sets the JSON body payload for endpoint and worker functions:
kinetics invoke BasicWorkerWorker --payload '{"name": "John"}'
Invoke endpoint with http headers:
kinetics invoke BasicWorkerWorker --headers '{"Authorization": "Bearer 123"}'
Invoke a function which needs a DB. DB gets provisioned locally and is fully operational, not just a mock for requests.
kinetics invoke DatabaseDatabase --with-db
Deploy entire project:
kinetics deploy
Deploy individual functions:
kinetics deploy DatabaseDatabase,BasicWorkerWorker
Deploy faster, but without the ability to roll back.
kinetics deploy --hotswap DatabaseDatabase
Invoke a function remotely by automatically resolving function's name into the URL:
kinetics invoke DatabaseDatabase --remote
Output logs for a function:
kinetics func logs BasicEndpointEndpoint
Output run statistics for a function:
kinetics func stats BasicEndpointEndpoint
Deploy from github actions
The newly initialized project contains a github workflow for continious deployment.
- After calling
kinetics init <project-name> - run
kinetics auth tokento get a token - and add it as
KINETICS_ACCESS_TOKENsecret to your repo to enable deploys.
After this setup main branch updates will be automatically deployed.
As the project gets developed, remember to add all secrets residing in .env.secrets to env section of the Run kinetics deploy step unless the file is under source control (which is highly descouraged because of insecurity implications of storing secrets within a repo).
Support & Community
- support@usekinetics.com. Help with builds, deployments, and runtime.
- GitHub Issues. Persistent bugs, and feature requests.
Dependencies
~110MB
~2M SLoC