Overview
Auto-discovery is Conductor’s zero-config approach to loading agents and ensembles. Instead of manually importing and registering each agent, Conductor automatically discovers them from your project directory at build time.Before Auto-Discovery
After Auto-Discovery
How It Works
Auto-discovery uses Vite plugins that scan your project directory at build time and generate virtual modules containing all your agents and ensembles.1
Step 1: Vite Plugin Scans Project
2
During the build process, Vite plugins scan your project:
3
vite-plugin-agent-discovery → Scans agents/**/*.yamlvite-plugin-ensemble-discovery → Scans ensembles/**/*.yaml4
Step 2: Virtual Modules Generated
5
The plugins generate virtual modules that bundle:
6
// virtual:conductor-agents (generated at build time)
export const agents = [
{
name: 'greet',
config: '...yaml content...',
handler: () => import('./agents/greet/index.ts'),
},
{
name: 'analyze',
config: '...yaml content...',
handler: () => import('./agents/analyze/index.ts'),
},
// ... all discovered agents
]
7
Step 3: Runtime Auto-Discovery
8
At runtime,
MemberLoader.autoDiscover() processes the virtual modules:9
Quick Start
Installation
Auto-discovery is built into Conductor templates. If you’re starting a new project:Manual Setup
If you have an existing project, add these plugins tovite.config.ts:
Using Auto-Discovery
Create your entry point (src/index.ts):
File Structure
Auto-discovery expects this structure:What Gets Discovered
Agents
Agents
Pattern:
agents/**/*.yamlExcluded: agents/generate-docs/** (by default)Handler Detection: If agents/{name}/index.ts exists, it’s auto-loaded as the handlerExample:Ensembles
Ensembles
Pattern:
ensembles/**/*.yamlNo exclusionsExample:API Reference
createAutoDiscoveryAPI(config)
Creates a Conductor API with auto-discovery.
Configuration options
Enable auto-discovery of agents and ensembles
Virtual agents module from
virtual:conductor-agentsVirtual ensembles module from
virtual:conductor-ensemblesAuthentication configuration
Enable request logging
CORS configuration
ExportedHandler<Env>
getMemberLoader()
Get the initialized MemberLoader instance.
MemberLoader | null
getEnsembleLoader()
Get the initialized EnsembleLoader instance.
EnsembleLoader | null
Advanced Usage
Custom Exclusions
Exclude specific directories from agent discovery:Custom File Extensions
Support.yml instead of .yaml:
Manual Loader Access
Use the loaders directly for advanced use cases:Troubleshooting
Agents Not Found
Problem: Auto-discovery doesn’t find your agents Solution:- Check file structure matches
agents/**/*.yaml - Ensure agents aren’t in excluded directories
- Check Vite plugin is registered in
vite.config.ts - Rebuild:
npm run build
TypeScript Errors
Problem:Cannot find module 'virtual:conductor-agents'
Solution:
Add type declarations:
Build Errors
Problem: Build fails with “Directory not found” Solution: Create empty directories if needed:Migration Guide
From Manual Registration
1
Step 1: Remove Manual Imports
2
Delete all manual agent/ensemble imports from your entry point.
3
Step 2: Add Virtual Module Imports
4
import { agents } from 'virtual:conductor-agents'
import { ensembles } from 'virtual:conductor-ensembles'
5
Step 3: Replace with
createAutoDiscoveryAPI6
export default createAutoDiscoveryAPI({
agents,
ensembles,
autoDiscover: true,
auth: { allowAnonymous: true },
})
7
Step 4: Rebuild and Test
8
npm run build
npx wrangler dev
Benefits
Zero Config
No manual imports or registration required
Fast Development
Add new agents by creating files—no code changes
Type Safe
Full TypeScript support with virtual module types
Production Ready
Build-time discovery ensures zero runtime overhead
Next Steps
Your First Agent
Create your first auto-discovered agent
Your First Ensemble
Create your first auto-discovered ensemble
Deployment
Deploy your auto-discovery project to production

