Skip to content

Owen3H/Koyeb.js

Repository files navigation

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