/Koyeb.js

An unofficial wrapper for interacting with the Koyeb API.

Primary LanguageTypeScript

Logo

Koyeb.js

Github Repo Size Codacy Badge

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.

View documentation

Features

🟩 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

Install & Import

pnpm add koyeb.js
import * as Koyeb from 'koyeb.js' // ESM
const Koyeb = require('koyeb.js') // CommonJS

Secure your Auth Token

  1. Head to Account ➟ API
  2. Create a new access token and copy the generated string.
  3. Head to your app settings ➟ Environment Variables ➟ Add Variable
  4. Name the variable AUTH_TOKEN and paste your copied token in the 'value' field.
  5. Hit 'Apply'. You can now access your token without exposing it to others!
const token = process.env.AUTH_TOKEN

Initialize an App

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.

Service creation and control

// Creating a service from the first in the app list.
const services = await myApp.listServices(),
      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()

Get an Instance

// 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)

Execute commands

// 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