Welcome to osn. project

osn.

The best plugin-base— No, no, not quite.

Plugin-driven CLI

Add plugins with one command. Git, Docker, env and your own.

Task runner & dependencies

Chain tasks with dependsOn. Run one, run the graph.

Lifecycle hooks

Plugins hook into onBeforeTask, onAfterTask. One place to orchestrate.

areas of osn.

configuration, CLI, plugin ecosystem, and SDK in one platform.

Configuration

.osn/project.json — validated with Zod, single source of truth.

"build": {
  "command": "tsc && node build.js",
  "dependsOn": ["clean", "lint"]
}

CLI

One binary. init, run, plugin — all under osn.

  • Create .osn/project.json
  • Run a task
  • Install plugin
  • List installed
  • Remove plugin

Plugin ecosystem

Official plugins and your own. Commands register automatically.

SDK & extensions

definePlugin for commands and hooks. Build your own plugin.

definePlugin({
  name: "@you/plugin-name",
  setup(ctx) {
    ctx.registerCommand({
      name: "my:hello",
      run: () => ctx.logger.info("Hello")
    });
  }
});

Last tweets

Latest from @

Ready to try osn?

Plugin-driven CLI and task runner for modern TypeScript projects.