Skip to main content
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_name is the file name where you defined your app.
  • Include a .gitignore file to exclude dependency folders like node_modules and .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

  • --path vs --entrypoint: Use --path to specify a subdirectory within the repo (useful for monorepos), and --entrypoint for the path to your app’s entry file relative to that directory (or repo root if no --path is specified).
  • The CLI automatically downloads and extracts the GitHub source code and uploads your app for deployment.
  • For private repositories, provide a --github-token or set the GITHUB_TOKEN environment 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 space

Deployment notes

  • The dependency manifest (package.json for JS/TS, pyproject.toml for Python) must be present in the root directory of your project.
  • For JS/TS apps, set "type": "module" in your package.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.py not app or app.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.78s
Once deployed, you can invoke your app from anywhere.

Deploy Button

The Deploy Button lets users deploy your Kernel app with a single click. It’s ideal for sharing open-source projects, templates, or example apps that others can deploy to their own Kernel account.

How it works

  1. Go to the Deploy Button generator in the Kernel dashboard
  2. Enter your public GitHub repository URL
  3. Specify the required environment variables (API keys, secrets, etc.) that users need to provide
  4. Copy the generated button snippet or link
When someone clicks your Deploy Button, they’re taken to a deployment flow where they:
  • Connect their Kernel account
  • Enter the required environment variable values you specified
  • Deploy the app to their account

Use cases

  • Open-source projects: Let users deploy your app without cloning repos or running CLI commands
  • Templates and starters: Share ready-to-deploy examples that others can customize
  • Documentation: Embed deploy buttons in READMEs so readers can try your code instantly

Adding the button to your repository

After generating your button, add it to your README or documentation:
[![Deploy](https://www.kernel.sh/brand_assets/kernel_deploy.svg)](https://dashboard.onkernel.com/deploy?repo=https%3A%2F%2Fgithub.com%2Forg%2Frepo&entrypoint=index.ts)
Or use HTML:
<a href="https://dashboard.onkernel.com/deploy?repo=https%3A%2F%2Fgithub.com%2Forg%2Frepo&entrypoint=index.ts"><img src="https://www.kernel.sh/brand_assets/kernel_deploy.svg" alt="Deploy" /></a>