Kinetics
Kinetics is a hosting platform for Rust applications that allows deploying all types of workloads by writing only Rust code.
pub async
pub async
pub async
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
# 2. Login or sign up, you will receive auth code to this email
# 3. Init a project from template
;
# 4. Call the function locally
# 5. Deploy the entire project to the cloud
# 6. Alternatively you can deploy only selected functions
# 7. Faster way, but you lose rollbacks
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 a SQL DB, 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:
Invoke a function locally with parameters. --payload sets the JSON body payload for endpoint and worker functions:
Invoke endpoint with http headers:
Invoke a function which needs a DB. DB gets provisioned locally and is fully operational, not just a mock for requests.
Invoke a function with a DB and applied migrations. The migrations are pulled from migrations folder within the project by default, or one can provide a custom path.
Deploy entire project:
Deploy individual functions:
Deploy faster, but without the ability to roll back.
Invoke a function remotely by automatically resolving function's name into the URL:
Create a DB migration file:
# Creates ./migrations/20251124125730_init.up.sql
Apply DB migrations from a local folder to the production DB:
Output logs for a function:
Output run statistics for a function:
CI/CD
Initializing
A GitHub workflow is automatically created in projects initialized with kientics init. If you need to add GitHub workflow in existing project do the following in the dir of the project:
Access token
To make GitHub workflow work you need to provide it with kinetics access token:
- After calling
kinetics init <project-name> - In your terminal run
kinetics auth tokento get a token (you need to be logged in) - Add it as
KINETICS_ACCESS_TOKENsecret to your repo to enable deploys (check example below).
This workflow enables automatic cloud deployment of any update in the main branch.
Secrets
In order to provide your functions with secrets residing in .env.secrets you need to add them to the env section of the Run kinetics deploy step with KINETICS_SECRET_ prefix, e.g.:
- name: Run kinetics deploy
env:
DEPLOY_DIR: .
KINETICS_ACCESS_TOKEN: ${{ secrets.KINETICS_ACCESS_TOKEN }}
KINETICS_SECRET_MY_SECRET: ${{ secrets.MY_SECRET }}
Support & Community
- support@usekinetics.com. Help with builds, deployments, and runtime.
- GitHub Issues. Persistent bugs, and feature requests.