npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@neelansh/coolifyjs

v0.1.2

Published

A TypeScript SDK for the Coolify API

Readme

CoolifyJS

A TypeScript SDK for the Coolify API. This SDK provides a clean, intuitive interface for managing your Coolify self-hosted PaaS instance programmatically.

Features

  • 🔒 Type-safe: Full TypeScript support with comprehensive type definitions
  • 📦 Complete API coverage: All 89 API endpoints across 11 resource categories
  • 🚀 Modern: ESM and CommonJS support, built with Vite
  • Lightweight: Zero runtime dependencies, uses native fetch
  • 🛡️ Error handling: Custom error classes for different API error types
  • 📖 Well documented: Comprehensive JSDoc comments and examples

Installation

npm install @neelansh/coolifyjs

Quick Start

import { CoolifyClient } from '@neelansh/coolifyjs';

const coolify = new CoolifyClient({
  baseUrl: 'https://coolify.example.com/api/v1',
  token: 'your-api-token',
});

// List all applications
const apps = await coolify.applications.list();

// Get a specific application
const app = await coolify.applications.get('app-uuid');

// Start an application
await coolify.applications.start('app-uuid');

Configuration

const coolify = new CoolifyClient({
  // Required: Your Coolify instance API URL
  baseUrl: 'https://coolify.example.com/api/v1',
  
  // Required: Your API token (Settings > API Tokens in Coolify)
  token: 'your-api-token',
  
  // Optional: Request timeout in milliseconds (default: 30000)
  timeout: 60000,
});

API Reference

Applications

Manage applications in your Coolify instance.

// List all applications
const apps = await coolify.applications.list();

// Get an application
const app = await coolify.applications.get('uuid');

// Create from public repository
const { uuid } = await coolify.applications.createFromPublicRepo({
  project_uuid: 'project-uuid',
  server_uuid: 'server-uuid',
  git_repository: 'https://github.com/user/repo',
  git_branch: 'main',
  name: 'My App',
  instant_deploy: true,
});

// Create from private repository (GitHub App)
await coolify.applications.createFromPrivateRepoGitHubApp({
  project_uuid: 'project-uuid',
  server_uuid: 'server-uuid',
  github_app_uuid: 'github-app-uuid',
  git_repository: 'user/private-repo',
  git_branch: 'main',
});

// Create from Docker image
await coolify.applications.createFromDockerImage({
  project_uuid: 'project-uuid',
  server_uuid: 'server-uuid',
  docker_registry_image_name: 'nginx',
  docker_registry_image_tag: 'latest',
});

// Update an application
await coolify.applications.update('uuid', {
  name: 'New Name',
  domains: 'app.example.com',
});

// Delete an application
await coolify.applications.delete('uuid', true, true); // delete configs and volumes

// Environment variables
const envs = await coolify.applications.listEnvs('uuid');
await coolify.applications.createEnv('uuid', { key: 'NODE_ENV', value: 'production' });
await coolify.applications.updateEnv('uuid', 'env-uuid', { value: 'development' });
await coolify.applications.deleteEnv('uuid', 'env-uuid');

// Lifecycle
await coolify.applications.start('uuid');
await coolify.applications.stop('uuid');
await coolify.applications.restart('uuid');

// Logs
const logs = await coolify.applications.logs('uuid');

Databases

Manage databases including PostgreSQL, MySQL, MariaDB, MongoDB, Redis, and more.

// List all databases
const databases = await coolify.databases.list();

// Get a database
const db = await coolify.databases.get('uuid');

// Create PostgreSQL database
const { uuid } = await coolify.databases.createPostgreSQL({
  project_uuid: 'project-uuid',
  server_uuid: 'server-uuid',
  name: 'my-postgres',
  postgres_user: 'admin',
  postgres_password: 'secret',
  postgres_db: 'mydb',
  instant_deploy: true,
});

// Create MySQL database
await coolify.databases.createMySQL({
  project_uuid: 'project-uuid',
  server_uuid: 'server-uuid',
  name: 'my-mysql',
});

// Create Redis database
await coolify.databases.createRedis({
  project_uuid: 'project-uuid',
  server_uuid: 'server-uuid',
  name: 'my-redis',
});

// Create MongoDB database
await coolify.databases.createMongoDB({
  project_uuid: 'project-uuid',
  server_uuid: 'server-uuid',
  name: 'my-mongo',
});

// Other databases: MariaDB, ClickHouse, Dragonfly, KeyDB
await coolify.databases.createMariaDB({ ... });
await coolify.databases.createClickHouse({ ... });
await coolify.databases.createDragonfly({ ... });
await coolify.databases.createKeyDB({ ... });

// Lifecycle
await coolify.databases.start('uuid');
await coolify.databases.stop('uuid');
await coolify.databases.restart('uuid');

// Backups
const backups = await coolify.databases.listBackups('uuid');
await coolify.databases.createBackup('uuid');

Deployments

Deploy and manage application deployments.

// List all deployments
const deployments = await coolify.deployments.list();

// Get a deployment
const deployment = await coolify.deployments.get('uuid');

// Deploy an application
await coolify.deployments.deploy('app-uuid', { force: true });

// List deployments for an application
const appDeployments = await coolify.deployments.listByApplication('app-uuid');

Services

Manage one-click services (pre-configured applications).

// List all services
const services = await coolify.services.list();

// Get a service
const service = await coolify.services.get('uuid');

// Create a service
const { uuid } = await coolify.services.create({
  project_uuid: 'project-uuid',
  server_uuid: 'server-uuid',
  type: 'plausible', // Service type
  name: 'My Analytics',
  instant_deploy: true,
});

// Environment variables
const envs = await coolify.services.listEnvs('uuid');
await coolify.services.createEnv('uuid', { key: 'SECRET', value: 'value' });

// Lifecycle
await coolify.services.start('uuid');
await coolify.services.stop('uuid');
await coolify.services.restart('uuid');

Projects

Organize resources into projects and environments.

// List all projects
const projects = await coolify.projects.list();

// Get a project
const project = await coolify.projects.get('uuid');

// Create a project
const { uuid } = await coolify.projects.create({
  name: 'My Project',
  description: 'Production applications',
});

// Update a project
await coolify.projects.update('uuid', { name: 'New Name' });

// Delete a project
await coolify.projects.delete('uuid');

// Environments
const envs = await coolify.projects.listEnvironments('project-uuid');
const env = await coolify.projects.getEnvironment('project-uuid', 'production');

await coolify.projects.createEnvironment('project-uuid', { name: 'staging' });
await coolify.projects.deleteEnvironment('project-uuid', 'staging');

Servers

Manage servers where your applications run.

// List all servers
const servers = await coolify.servers.list();

// Get a server
const server = await coolify.servers.get('uuid');

// Create a server
const { uuid } = await coolify.servers.create({
  name: 'Production Server',
  ip: '192.168.1.100',
  private_key_uuid: 'pk-uuid',
  instant_validate: true,
});

// Update a server
await coolify.servers.update('uuid', { name: 'New Name' });

// Delete a server
await coolify.servers.delete('uuid');

// Get resources on a server
const resources = await coolify.servers.getResources('uuid');

// Get domains configured on a server
const domains = await coolify.servers.getDomains('uuid');

// Validate server connection
const validation = await coolify.servers.validate('uuid');

Private Keys

Manage SSH private keys for server access.

// List all private keys
const keys = await coolify.privateKeys.list();

// Get a private key
const key = await coolify.privateKeys.get('uuid');

// Create a private key
const { uuid } = await coolify.privateKeys.create({
  name: 'Production Key',
  private_key: '-----BEGIN OPENSSH PRIVATE KEY-----\n...',
});

// Update a private key
await coolify.privateKeys.update('uuid', { name: 'New Name' });

// Delete a private key
await coolify.privateKeys.delete('uuid');

GitHub Apps

Manage GitHub App integrations for private repository access.

// List all GitHub Apps
const apps = await coolify.githubApps.list();

// Get a GitHub App
const app = await coolify.githubApps.get('uuid');

// Create a GitHub App
const { uuid } = await coolify.githubApps.create({
  name: 'My GitHub App',
  app_id: 123456,
  installation_id: 789012,
  client_id: 'Iv1.xxx',
  client_secret: 'secret',
  webhook_secret: 'webhook-secret',
  private_key: '-----BEGIN RSA PRIVATE KEY-----\n...',
});

// Load repositories
const repos = await coolify.githubApps.loadRepositories('uuid');

// Load branches for a repository
const branches = await coolify.githubApps.loadBranches('uuid', 'owner/repo');

Teams

Manage teams and members.

// List all teams
const teams = await coolify.teams.list();

// Get a team
const team = await coolify.teams.get(1);

// Get current team
const current = await coolify.teams.current();

// Get team members
const members = await coolify.teams.getMembers(1);
const currentMembers = await coolify.teams.getCurrentMembers();

System

System operations and health checks.

// Get Coolify version
const { version } = await coolify.system.version();

// Health check
const health = await coolify.system.healthCheck();

// Enable/disable API
await coolify.system.enableApi();
await coolify.system.disableApi();

Resources

List all resources across your instance.

// List all resources (applications, databases, services)
const resources = await coolify.resources.list();

Error Handling

The SDK provides custom error classes for different error types:

import {
  CoolifyError,
  CoolifyAuthError,
  CoolifyNotFoundError,
  CoolifyValidationError,
  CoolifyRateLimitError,
  CoolifyServerError,
} from '@neelansh/coolifyjs';

try {
  await coolify.applications.get('non-existent-uuid');
} catch (error) {
  if (error instanceof CoolifyNotFoundError) {
    console.log('Application not found');
  } else if (error instanceof CoolifyAuthError) {
    console.log('Invalid API token');
  } else if (error instanceof CoolifyValidationError) {
    console.log('Validation errors:', error.errors);
  } else if (error instanceof CoolifyRateLimitError) {
    console.log(`Rate limited. Retry after ${error.retryAfter} seconds`);
  } else if (error instanceof CoolifyServerError) {
    console.log('Server error:', error.message);
  } else if (error instanceof CoolifyError) {
    console.log('API error:', error.message, error.statusCode);
  }
}

TypeScript

All types are exported from the package:

import type {
  Application,
  Database,
  Server,
  Project,
  Service,
  Deployment,
  Team,
  PrivateKey,
  GitHubApp,
  CoolifyClientConfig,
} from '@neelansh/coolifyjs';

Development

# Install dependencies
npm install

# Run tests
npm test

# Run tests with coverage
npm run test:coverage

# Build
npm run build

# Type check
npm run lint

# Clean build artifacts
npm run clean

Publishing to NPM

First-time Setup

  1. Create an NPM account at npmjs.com
  2. Login to NPM:
    npm login
  3. Update the repository, bugs, and homepage URLs in package.json with your GitHub repository

Publishing Commands

export NPM_TOKEN=<MY_NPM_TOKEN>
# Dry run (test publish without actually publishing)
npm run release:dry

# Publish current version
npm run release

# Publish with version bump
npm run release:patch   # 1.0.0 -> 1.0.1
npm run release:minor   # 1.0.0 -> 1.1.0
npm run release:major   # 1.0.0 -> 2.0.0

Manual Publishing

# 1. Run tests
npm run test:run

# 2. Build the package
npm run build

# 3. Bump version (choose one)
npm version patch  # or minor, major

# 4. Publish to NPM
npm publish

# 5. Push tags to git
git push --follow-tags

License

MIT