SML - when agent knows everything

Recently made the agent show project demos. Worked via scenario: wrote YAML with commands like "open page", "click button", "fill form". For each command - a function in plugin.

Problem: for agent to do something, need to describe that command in plugin beforehand. Want new action - write new function, add to catalog. Inflexible.

What if agent discovers what the system can do on its own?

Idea

Make registry of all operations. Not just UI commands, but everything: creating records, sending email, waitlist signup, user management. Core registers its operations. Each plugin - its own. Builds into common tree. Agent reads it and decides what to call.

Called it SML - Site Management Layer. Similar to DSL I have for data, but DSL is about models and CRUD. SML is about operations - what the system can do.

How it works

On startup:

  1. Core registers base operations: auth, data, config
  2. Plugins add their own: crm.contact.create, waitlist.signup, ui.action.navigate
  3. Everything assembles into single registry
  4. Agent requests tree and sees 520 operations

Before agent only knew about 13 UI commands from YAML. Now sees everything.

What changed

User writes: "create contact [email protected]"

Before agent generated UI action chain:

  • open users page
  • click "add"
  • fill form
  • click "save"

Now just calls actions.crm.contact.create directly. No interface. Faster and more reliable.

Dissolve pattern

Plugins don't know about each other. Each registers operations in common registry. CRM plugin adds actions.crm.. Waitlist plugin - actions.waitlist.. AI-agent plugin - ui.action.*.

Core doesn't know which plugins are installed. Just collects what got registered.

Summary

520 operations in registry. Agent chooses itself: need navigation - takes UI action. Need data - calls backend directly. Add new plugin - agent automatically learns about new capabilities.

This was a long-standing idea. Finally built it.

← Back to blog