The programmable operations platform
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.
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")
}
Watch product tour
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
Project
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)
}
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]
)
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.
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
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
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
“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.