acklo is no longer being maintained.
Hey ๐Ÿ‘‹, thanks for visiting. After an unsuccessful beta I've decided to move acklo's testers onto other services and wind the project down. If you're looking for a remote config service, check out Flagsmith!

Deploy safer, experiment faster.

acklo is a simple configuration and feature flags tool for Node.js applications.

Use cases

Risky deployments, long lived feature branches, scattered configuration, emergency rollbacks… sound familiar?

acklo solves these issues by letting you safely roll out new features and configuration changes to your Node.js applications.

Tame those scary deployments by introducing features to production behind a feature flag, knowing that if anything goes wrong, you can disable them with a single click. No rollbacks or redeployments required.

Improve debugging feedback loops by changing the configuration of running applications on the fly.

Merge early, merge often… instead of waiting for a feature to be completed and tested in a long-lived feature branch, get it incrementally integrated with the mainline code, but hidden from your users until it's ready for prime time.

How it works…

(Hint: getting started takes less than 5 minutes)

Step 1

Define your config

Add a Config Template file to your codebase and populate it with the properties you'd like to manage.

acklo.config.yml
version: v1
configuration:
- id: config
  name: General configuration
  properties:
  - id: log_level
    name: Logging level
    type: string
    default: info
- id: switches
  name: Feature switches
  properties:
    - id: experimental_api
      name: Experimental v2 API
      type: boolean
      default: false
Step 2

Add the SDK

Run npm install @acklo/node-sdk and start using the SDK to get the latest values of your config. When your application starts up it will connect to acklo and stay in sync with any config updates you make.

index.js
const AckloClient = require('@acklo/node-sdk');

const acklo = new AckloClient({
  applicationName: 'api-service',
  environmentName: 'production'
}).connect();

app.get('/api/experimental_api', (req, res) => {
  if (!acklo.get('switches.experimental_api')) {
    res.status(404).end();
    return;
  }

  res.json({ hello: 'world' });
});
Step 3

Start making changes!

Use the web dashboard to quickly view and change your app's configuration. Updates are immediately sent to your app's instances.

https://acklo.app

Features

Resilient

If the SDK can't retrieve your config (e.g. due to a bad network connection), it will keep providing your application with the last known good config, or with defaults.

Fast and efficient

Instead of polling or fetching config values via a web request whenever they're accessed, the SDK caches config values locally and automatically updates the cache when it's pushed an update via WebSocket.

Config as code

The template for your app's configuration is defined in a YAML file alongside your codebase. You can track it in source control, and reuse it on other environments of your application without having to recreate the config on the UI.

Support for multiple environments

Configuration for different environments (e.g. dev, prod, staging, or even a developer's local machine) is isolated and can be updated without affecting other environments.

Instant updates

Your application instances receive a notification about config updates as soon as they're made. This lets you update your config without worrying about restarting or redeploying code on servers.

Team and workspace management

Invite your team to your acklo workspace and manage your app's configuration together. Work in more than one team? Create a different workspace for each one and manage membership granularly.