An unofficial wrapper for the Koyeb REST API, enabling you to interact with apps, services and more.
Designed to have a simple, intuitive syntax using asynchronous functions.
🟩 Completed
- Service control (resume, pause, re-deploy)
- Get a list of services and apps
- Support for multiple apps using classes
- Get a specific instance, or the latest
- Execute commands on an instance
🟨 In Progress
- Deployment & related methods
- Finish instance & service
- Metrics
🟥 Not Implemented / Future Ideas
- Logs
- Secrets
bun add koyeb.js
import * as Koyeb from 'koyeb.js' // ESM
const Koyeb = require('koyeb.js') // CommonJS
- Head to
Account
➟API
on Koyeb. - Create a new access token and copy the generated string.
- Head to your app settings ➟
Environment Variables
➟Add Variable
. - Name the variable
AUTH_TOKEN
and paste your copied token in the 'value' field. - Hit 'Apply'. You can now access your token without exposing it to others!
const token = process.env.AUTH_TOKEN
const myApp = await new Koyeb.App(token).fromName('appName')
// Alternatively, you can replace fromName with 2 other methods.
.fromID('13j25-4323b2-671f') // The ID of the application.
.fromIndex(0) // The index of the app in your app list.
// Creating a service from the first in the app list.
const services = await myApp.listServices()
const service = new Koyeb.Service(services[0].id, token)
// Calls `status()` internally and returns a true if we received 'PAUSED'.
console.log(service.paused())
console.log(service.status())
console.log(service.info())
// Each will return true/false if the request succeeded/failed.
// Calling resume/pause when already running/paused will return false.
await service.redeploy()
await service.resume()
await service.pause()
// Returns the application's current instance.
const myInstance = await new Koyeb.Instance(appID, token).latest()
// Or get a specific instance by its ID.
const myInstance = await new Koyeb.Instance.get(instanceID, token)
// Returns a promise containing the command result.
// This example outputs a list of files & directories on the instance.
const ls = await instance.executeCommand({ command: ['ls'] })
console.log(ls)
// You can also pass 3 optional keys (ttyWidth, ttyHeight, data).
// More info -> https://www.koyeb.com/docs/api#operation/ExecCommand