Deploy-as-you-save client for the cloud

rx is a lightweight CLI and runtime that lets you deploy any function instantly as you save it in your editor. It’s fast, simple, and takes care of setting up all your cloud infrastructure.

Brought to you by Khalid Zoabi

Introducing rx

Tired of all the scaffolding and roles, buckets, tables, auth, payments, and everything else you have to set up every time you start a new project? rx is here for you.

Introducing rx, a cloud client for getting stuff done. It makes it really easy to deploy any TypeScript function to the cloud. You just have to write some code, hit Cmd + S to save in your editor, and your changes are deployed automatically. It redeploys every time you save, usually in under 5 seconds, so your changes are live instantly. It has a bunch of stuff built-in and nothing to configure. It's just plain functions.

Use the power of the cloud without any new concepts to learn. By the time you scroll to the bottom of this document, you'll be an rx expert.

πŸ”₯ Bottomless storage
πŸ”₯ Bottomless secrets storage
πŸ”₯ Bottomless logs
πŸ”₯ Free auth

Write functions in TypeScript

export async function sayHello () {
  return 'Hello there!'
}

Automatically deploy to the cloud as you save

rx dev

Create environments with a single command

rx deploy prod

Use virtually infinite secrets, object, and blob storage

const user = context.storage.get('some-user-id-key')
const apiKey = context.secrets.get('some-api-key')

Each function has access to a powerful context object

context.auth
context.functions
context.payments
context.request
context.secrets
context.send
context.storage

Call any user's public functions

const response = context.call({
  user: '@someUser',
  function: 'doStuff'
})

Lookup data from any other user or function's storage

const user = context.storage.get({
  user: '@someUser',
  function: 'doStuff',
  key: 'some-user-id-key'
})

Send email and SMS notifications to yourself

context.email('That was easy!')
context.sms('Hey, this is an important alert!')

Auth is finally easy

export function doStuff (context: Context) {
  if (context.hasRole('admin')) {
    return 'Hey admin!'
  }
  if (context.isAnonymous()) {
    return 'Hey, you might want to sign in for more features!'
  }
  return 'Hey user!'
}

Payments, and more, all built right in

const link = context.payments.createCheckoutLink({
  product: {
    name: 'Fur coat',
    price: '$249.99'
  },
  discount: {
    percent: 20
  },
  link: {
    expiresIn: '30 minutes'
  }
})

Coming soon

✨ No cold starts
✨ Scheduled cron jobs
✨ Deploy in your own cloud account (AWS, GCP, Azure, DigitalOcean, Fly, Docker)
✨ Browse all data in a nice spreadsheet-like GUI
✨ Typed remote function calls
✨ Share functions publicly
✨ Import packages from any language

Beta access

Excited to try this out and want to get started right away?

Drop your email to get added to the beta. When accepted, you'll receive an API key and instructions via email.

You can also watch some short 1 minute intro videos here.

Not in the beta yet? You should reserve your username, like rx.run/you.

See the latest updates from our blog.