Onu gives you everything you need to quickly productionize your scripts by providing hosted, user-friendly auto-generated UIs and built-in auditing and integrations.

How does it work?

After signing up, you will have a hosted platform for deploying new internal tools – we call them tasks. Each task on Onu is created with a Task configuration file written with one of Onu’s SDKs.
We currently support Node/Express. We’re rolling out Python SDKs for Flask & Django soon.

import { Task } from '@onuhq/node'
import { slack } from '@onuhq/integrations'
import organizationService from '../businessLogic/organizationService'

const task = new Task({
  name: "Create new organization",
  description: "Creates a new organization on the app",
  slug: 'create-org',
  input: {
    orgName: {
      type: "string",
      name: "Organization name",
    size: {
      type: "number",
      name: "Size",
      required: false,
      description: "The number of seats in the organization",
  run: async (input, context) => {
    const { orgName, size } = input;
    // Define your custom logic here
    console.log('Do some stuff');
    const org = organizationService.createOrg(orgName);
    await slack.postMessage({
      message: 'Created org ${orgName}`,
      channel: '#customers'
    context.logger.info('Successfully created new organization');
    return org;

We provide a library of predefined methods and integrations that you can use within your tasks, such as emitting logs or posting to Slack. You can browse the full list of supported integrations here. We are building more integrations so that you can compose truly end-to-end workflows.

The Task configuration file is all you need to create a production-ready task. After a task is created and synced to Onu, you get an autogenerated UI, real-time updates of your task run, and built-in auditing to keep track of previous task runs.