Deploying
Kernel's app deployment process is as simple as it is fast. There are no configuration files to manage or complex CI/CD pipelines.
Once you deploy an app on Kernel, you can schedule its actions on a job or run them from other contexts. You can even run actions multiple times in parallel.
Deploy the app
From local directory
Use our CLI from the root directory of your project:
kernel deploy <entrypoint_file_name>Notes
- The
entrypoint_file_nameis the file name where you defined your app. - Include a
.gitignorefile to exclude dependency folders likenode_modulesand.venv.
From GitHub
You can deploy a Kernel app directly from a public or private GitHub repository using the Kernel CLI. No need to clone or manually push code.
kernel deploy github \
--url https://github.com/<owner>/<repo> \
--ref <branch|tag|commit> \
--entrypoint <path/to/entrypoint> \
[--path <optional/subdir>] \
[--github-token <token>] \
[--env KEY=value ...] \
[--env-file .env] \
[--version latest] \
[--force]Notes
--pathvs--entrypoint: Use--pathto specify a subdirectory within the repo (useful for monorepos), and--entrypointfor the path to your app's entry file relative to that directory (or repo root if no--pathis specified).- The CLI automatically downloads and extracts the GitHub source code and uploads your app for deployment.
- For private repositories, provide a
--github-tokenor set theGITHUB_TOKENenvironment variable.
Environment variables
You can set environment variables for your app using the --env flag. For example:
kernel deploy my_app.ts --env MY_ENV_VAR=my_value # Can add multiple env vars delimited by spaceDeployment notes
- The dependency manifest (
package.jsonfor JS/TS,pyproject.tomlfor Python) must be present in the root directory of your project. - For JS/TS apps, set
"type": "module"in yourpackage.json. - View deployment logs using:
kernel deploy logs <deployment_id> --follow - If you encounter a 500 error during deployment, verify that your entrypoint file name and extension are correct (e.g.,
app.pynotapporapp.js). - Kernel assumes the root directory contains at least this file structure:
project-root/
├─ .gitignore # Exclude dependency folders like node_modules
├─ my_app.ts # Entrypoint file (can be located in a subdirectory, e.g. src/my_app.ts)
├─ package.json
├─ tsconfig.json # If using TypeScript
└─ bun.lock | package-lock.json | pnpm-lock.yaml # One of these lockfiles# Successful deployment CLI output
SUCCESS Compressed files
SUCCESS Deployment successful
SUCCESS App "my_app.ts" deployed with action(s): [my-action]
INFO Invoke with: kernel invoke my-app my-action --payload '{...}'
SUCCESS Total deployment time: 2.78sOnce deployed, you can invoke your app from anywhere.