Skip to content

Extension Points

lynox is designed to be extended without modifying core source code. There are several ways to add functionality.

The simplest way to extend lynox is by connecting external MCP servers. These add new tools that lynox can use during conversations.

Terminal window
/mcp my-server https://my-mcp-server.example.com/sse
{
"mcp_servers": [
{ "name": "my-server", "url": "https://my-mcp-server.example.com/sse" }
]
}

Once registered, the tools from the MCP server are available in all sessions. lynox discovers capabilities automatically via the MCP protocol.

Plugins can extend lynox’s functionality at a deeper level. Enable or disable them in your config:

{
"plugins": {
"my-plugin": true
}
}

Plugins are loaded at startup and can register additional tools, modify behavior, or add new capabilities.

Beyond the four built-in roles (Researcher, Creator, Operator, Collector), you can define custom roles that set specific model tiers, tool restrictions, and autonomy levels.

Place agent definitions in a directory and configure it:

{
"agents_dir": "./agents"
}

Agents are specialized configurations that combine a system prompt with tool access rules for specific use cases.

Define multi-step workflows as YAML or JSON manifests:

{
"manifests_dir": "./workflows"
}

Manifests describe step sequences, dependencies, and conditions. lynox executes them as pipelines with progress tracking.

If you’re building on top of lynox as a library:

import { Engine, Session, ToolRegistry } from '@lynox-ai/core';
import type { ToolDefinition } from '@lynox-ai/core/types';

The main exports include:

  • Engine — Core singleton, manages sessions and background tasks
  • Session — Per-conversation context with streaming
  • ToolRegistry — Register and manage tools
  • WorkerLoop — Schedule and run background tasks
  • Memory — Access the memory system
  • TaskManager — Manage tasks programmatically
const registry = new ToolRegistry();
registry.register({
definition: {
name: 'my_tool',
description: 'Does something useful',
input_schema: {
type: 'object',
properties: {
query: { type: 'string', description: 'The input query' }
},
required: ['query']
}
},
handler: async (input, context) => {
// Your tool logic here
return { result: `Processed: ${input.query}` };
}
});

lynox is licensed under the Elastic License 2.0 (ELv2). You can use, modify, and self-host it freely. The only restriction: you cannot offer lynox as a managed/hosted service to third parties.