The backend for your apps, the tools for your teams

The backend for your apps, the tools for your teams

The backend for your apps, the tools for your teams

The backend for your apps, the tools for your teams

Keel is the complete backend toolkit for your engineers,
with ready-to-go internal tools for your operators.

Keel is the complete backend toolkit for your engineers, with ready-to-go internal tools for your operators.

Keel is the complete backend toolkit for your engineers,
with ready-to-go internal tools for your operators.

Keel is the complete backend toolkit for your engineers,
with ready-to-go internal tools for your operators.

Testing and releasing changes takes days

Can’t ship new features because of backend limitations

Unreliable and clunky internal tools

Wiring together countless SaaS products

Development and operations teams clashing

Never prioritising internal tools

We're understaffed but can't afford new hires

Creating build and deploy pipelines

Re-writing the same boilerplate code

Customer service can't access the data they need

Our backend is unreliable and hard to debug

Endless infrastructure decisions

Setting up monitoring and telemetry

Managing database scaling and migrations

Increasing backend complexity slowing us down

Spending months building inflexible backend services

Focus on delighting your customers, not technical complexity

Focus on delighting your customers,
not technology complexity

Building great software takes money, expertise, and lots of time. Endless technical decisions distract you from creating value for your customers, whilst your backend keeps getting more complex.

Even once you’re off the ground, you’ve then got the challenge of scaling that tech, alongside your business and your team. You need a system that grows with you.

And your backend isn’t just an engineering silo, it’s the hub of your business! As your company thrives, every department needs the tools to access your data securely and quickly so they can keep delighting your customers.

It’s complicated. But it doesn’t have to be…

Endless infrastructure decisions

Endless infrastructure decisions

Spending months building inflexible backend services

Spending months building inflexible backend services

Spending months building inflexible backend services

Spending months building inflexible backend services

Can’t ship new features because of backend limitations

Can’t ship new features due to backend limitations

Our internal tools are unreliable

Our internal tools are unreliable

Unreliable and clunky internal tools

Unreliable and clunky internal tools

Can’t ship new features because of backend limitations

Wiring together countless SaaS products

Development teams and operations teams clash

Tech and operations teams clashing

Tech and operations teams clashing

Development teams and operations teams clashing

Endless infrastructure decisions

Re-writing the same boilerplate code again

Our backend is unreliable and hard to debug

Our backend is unreliable and hard to debug

Managing multiple environments

Managing multiple environments

Setting up monitoring and telemetry

Setting up monitoring and telemetry

Never prioritise internal tools

$ npx keel init

$ npx keel init

$ npx keel init

$ npx keel init

It all starts with the Schema

The schema is the source of truth and describes your whole system. Keel is unapologetically code first and built on top of engineering best practices enabling you to build quickly and confidently.

Data model

API

endpoints

Authentication

Secrets

Data model

Authentication

Secrets

API endpoints

schema.keel

model Task {

fields {

title Text

complete Boolean

owner Identity

project Project?

}


actions {

create createTask() with (name, project.id?) {

@set(task.owner = ctx.identity)
@permission(expression: ctx.isAuthenticated)

}

get getTask(id)

update updateTask(id) with (name, project.id)

update completeTask(id) {

@set(todo.complete = true)

}

list listTasks(project.id?)

delete deleteTask(id)

}

@permission(

actions: [get, list, update, delete],

expression: todo.owner == ctx.identity

)

}


model Project {

fields {

name Text

tasks Task[]

}


actions {

create createProject() with (name)

get getProject(id)

update updateProject(id) with (name)

list listProjects()

delete deleteProject(id)

}


@on([create], sendNewProjectEmail)

}


job SendDailySummaryEmail {

@schedule("every weekday at 9am")

}

Job schedules

Permission rules

Custom functions

Event queues

Custom

functions

Permission

rules

Event

queues

Job

schedules

Design your data model

Your data model is the heart of your business. Describe and collaborate on your data model in the Schema and get a fully-managed serverless Postgres with database migrations handled for you.

Data model as code

Relational data structures

Fully managed migrations

End to end type safety

VS Code extension

Database migrated

Task

Fields

id

id

ID

ID

title

title

Text

Text

complete

complete

Boolean

Boolean

project

project

Project

Project

createdAt

createdAt

Timestamp

Timestamp

updatedAt

updatedAt

Timestamp

Timestamp

Project

Fields

id

id

ID

ID

name

name

Text

Text

tasks

tasks

Task[]

Task[]

createdAt

createdAt

Timestamp

Timestamp

updatedAt

updatedAt

Timestamp

Timestamp

schema.keel

model Task {

fields {

title Text

complete Boolean

project Project

}

}


model Project {

fields {

name Text

tasks Task[]

}

Define your APIs

Define the actions that can be taken on your data and get GraphQL and JSON APIs that just work. The best code is no code at all.

Designed by you, powered by Keel

JSON, GQL and RPC APIs

Generated Typescript client SDK

Generated OpenAPI 3.1 specifications

Create multiple APIs from a single schema

schema.keel

actions {

get getTodo(id)

create createTodo() with (name, project.id)

update updateTodo(id) with (name, project.id)

update completeTodo(id) {

@set(todo.complete = true)

}

list listTodos(project.id?) {

@where(todo.project in ctx.identity.user.projects)

}

delete deleteTodo(id)

write customAction(id) returns (ActionResponse)

}

GQL

JSON

RPC

Extend everywhere,
test everything

Power actions with TypeScript functions to add business logic. Add event subscribers for async workloads. Setup background jobs to run on your schedule or manually. All wrapped up with powerful testing libraries tailored to your schema.

If you can write the code, you can build it with Keel.

Extend any action with hooks and custom functions

Painless event queues and workers

Scheduled and manually triggered jobs

Built-in testing for actions, events and jobs

schema.keel

model Account {

fields {

name Text

email Text

identity Identity

}

@on([create], sendWelcomeEmail)

}


job SendDailySummaryEmail {

@schedule("every weekday at 9am")

}

Secure by default

Easily define row-based or role-based permission rules using Keel’s powerful expression syntax. Then use the built in authentication or seamlessly connect any 3rd party system.

Row- and role-based permissioning

“Deny by default” access control

Connect with OAuth or OIDC authentication providers

Easily model complex permissions

schema.keel

@permission(

actions: [create, get, list],

expression: ctx.identity.account in todo.project.members

)


@permission(

actions: [update, delete],

expression: todo.owner == ctx.identity

)


@permission(

actions: [create, get, list, update, delete],

roles: [Admin]

)

OAuth

OIDC

Run it all locally and deploy with one command

With Keel's CLI, VSCode extension and local console, you get a full local environment designed to create the perfect developer experience.

$ keel run


✅ Schema valid

✅ Database migrated

✅ Functions built

Local development console:

- http://console.keel.so/local


Api endpoints:

- http://localhost:8000/api/graphql (GraphQL)

- http://localhost:8000/api/json (JSON)

- http://localhost:8000/api/rpc (JSON-RPC)

$ keel run


✅ Schema valid

✅ Database migrated

✅ Functions built

Local development console:

- http://console.keel.so/local


Api endpoints:

- http://localhost:8000/api/graphql

- http://localhost:8000/api/json

- http://localhost:8000/api/rpc

$ keel run


✅ Schema valid

✅ Database migrated

✅ Functions built

Local development console:

- http://console.keel.so/local


Api endpoints:

- http://localhost:8000/api/graphql

- http://localhost:8000/api/json

- http://localhost:8000/api/rpc

When you’re ready to deploy just…

$ git push

Ship and grow as a team

From infrastructure designed for explosive growth to the instant generation of tools for operations teams - Keel is built for the needs of scaling teams.

Infrastructure that fits your workflow

Built with version control at the core, Keel handles the provisioning and management of infrastructure based on your Schema. Easily spin up multiple environments connected to branches to create the perfect pipeline that fits your team's workflow.

Infrastructure as Schema

Fully managed serverless infrastructure

Multiple environments with flexible git workflows

Automatic and manual approval deployments

Staging

Fix a bug

Production

Add stable feature

Deploying...

87s3cf

Shiny new feature

Deploy steps

Configuring infrastructure...

Deploying functions

Deploying runtime

Migrating database

Understand exactly what your code, and customers, are doing

Keel is not a magic black box. Every interaction is traced with automatic instrumentation to ensure you have complete visibility of the system. Brought together in a simple, but powerful, interface that lets your whole team debug together.

Detailed tracing of every request

Connect Keel actions, custom code and events

Built on OpenTelemetry standards

Full audit trail for all activity

623ms

32ms

12ms

56ms

14ms

Requests

0

+5% from last period

Accounts

0

+13% from last period

COLLABORATE

What’s a backend without friends?

Whether it’s customer service, marketing, logistics or any other area of business, the Keel schema instantly creates tools that let your entire team interact with your data timely and securely.

Operations

Customer service

Finance

“Keel has been instrumental in the successful launch of Bravely’s new platform. Their comprehensive backend solution, paired with the exceptional support of their fantastic team, enabled us to rapidly deploy a sophisticated and meticulously crafted product in a tightly regulated industry. Without Keel, we’d be months behind our current launch.”

Melissa Ng CEO Bravely.io

Together, we build businesses that thrive

Sign up to the waitlist for early access. We're onboarding new users ever week. If you have a particular project in mind, book a call with us to discuss how Keel could help. We offer a managed migration service to help you get up and running in no time.

ABOUT US

We're lowering the barrier to great tech

Building great software from scratch takes time, expertise, and investment. Off-the-shelf solutions rarely give the long-term support businesses need to succeed, leaving you on the back foot from day one. We built Keel to change that. 

ABOUT US

We're lowering the barrier to great tech

Building great software from scratch takes time, expertise, and investment. Off-the-shelf solutions rarely give the long-term support businesses need to succeed, leaving you on the back foot from day one. We built Keel to change that. 

ABOUT US

We're lowering the barrier to great tech

Building great software from scratch takes time, expertise, and investment. Off-the-shelf solutions rarely give the long-term support businesses need to succeed, leaving you on the back foot from day one. We built Keel to change that. 

ABOUT US

We're lowering the barrier to great tech

Building great software from scratch takes time, expertise, and investment. Off-the-shelf solutions rarely give the long-term support businesses need to succeed, leaving you on the back foot from day one. We built Keel to change that.