
Security News
Feross on the 10 Minutes or Less Podcast: Nobody Reads the Code
Socket CEO Feross Aboukhadijeh joins 10 Minutes or Less, a podcast by Ali Rohde, to discuss the recent surge in open source supply chain attacks.
@foxruv/agent-learning-core
Advanced tools
Shared DSPy + AgentDB + LLM infrastructure for self-improving agents (NFL, microbiome, etc.)
Self-improving agent infrastructure used in production for:
It gives you a two-phase learning loop:
Training phase (Python + DSPy):
Production phase (TypeScript only):
npm install @foxruv/agent-learning-core
# or
pnpm add @foxruv/agent-learning-core
Wire up the centralized intelligence backend:
import { initSupabaseFromEnv } from "@foxruv/agent-learning-core";
// Initialize once at startup
initSupabaseFromEnv();
// Now you can use all Supabase features:
// - storeExpertSignature()
// - logTelemetry()
// - saveReflexion()
// - recordConsensusLineage()
// - detectDrift()
See docs/SUPABASE_SETUP.md for complete setup guide!
import {
PythonOptimizerClient,
AgentDBOptimizerStorage,
createReasoningBank
} from "@foxruv/agent-learning-core";
const optimizer = new PythonOptimizerClient({
baseUrl: process.env.DSPY_OPTIMIZER_URL!,
});
const storage = new AgentDBOptimizerStorage({
agentdbPath: './data/optimizations.agentdb',
autoInit: true
});
const reasoningBank = createReasoningBank('./data/reasoning.db');
const trainingData = await buildDomainTrainingData(); // your data
const result = await optimizer.optimize({
expert_role: "my_domain_expert",
signature: {
inputs: [
{ name: "question", type: "string", description: "Question to answer" }
],
outputs: [
{ name: "answer", type: "string", description: "Expert answer" }
]
},
training_data: trainingData,
});
await storage.storeOptimization(result);
await reasoningBank.storeOptimizationTrajectory("my_domain_expert", result);
import {
AgentDBOptimizerStorage,
Qwen3Provider,
} from "@foxruv/agent-learning-core";
const storage = new AgentDBOptimizerStorage({
agentdbPath: './data/optimizations.agentdb',
autoInit: true
});
const provider = new Qwen3Provider("http://localhost:1234", 5);
const expertConfig = await storage.loadOptimization("my_domain_expert");
// Use expertConfig.signature and expertConfig.few_shot_examples
// in your own expert class / @ax-llm/ax pipeline
const prediction = await provider.predict(
expertConfig.signature,
{ question: "What is the capital of France?" }
);
import {
createSwarmCoordinator,
PythonOptimizerClient,
AgentDBOptimizerStorage,
createReasoningBank
} from "@foxruv/agent-learning-core";
const optimizer = new PythonOptimizerClient({ baseUrl: "http://localhost:8000" });
const storage = new AgentDBOptimizerStorage({ autoInit: true });
const reasoningBank = createReasoningBank();
const coordinator = createSwarmCoordinator(optimizer, storage, {
max_concurrent: 3,
retry_on_failure: true,
share_learning: true // Experts learn from each other!
}, reasoningBank);
const results = await coordinator.trainExperts([
{
expert_role: "analyst",
request: { /* ... */ },
priority: "high"
},
{
expert_role: "gambler",
request: { /* ... */ },
priority: "medium"
},
{
expert_role: "scholar",
request: { /* ... */ },
priority: "high"
}
]);
const stats = coordinator.getStats();
console.log(`Success rate: ${(stats.success_rate * 100).toFixed(1)}%`);
import {
DatasetBuilder,
TemporalExample
} from "@foxruv/agent-learning-core";
const builder = new DatasetBuilder<TemporalExample>();
// Temporal split (train on past, validate on future)
const dataset = builder.buildTemporalSplit(examples, {
strategy: 'temporal',
trainThroughKey: 2023000, // e.g., season * 1000 + week
ensureNoLeakage: true
});
console.log(`Training: ${dataset.training.length} examples`);
console.log(`Validation: ${dataset.validation.length} examples`);
console.log(`Leakage detected: ${dataset.metadata.temporal_leakage_detected}`);
import { createReasoningBank } from "@foxruv/agent-learning-core";
const reasoningBank = createReasoningBank('./data/reasoning.db');
// Get learning insights
const insights = await reasoningBank.getInsights("analyst");
console.log(`Success rate: ${(insights.success_rate * 100).toFixed(1)}%`);
console.log(`Avg confidence: ${insights.avg_confidence.toFixed(2)}`);
console.log(`Total trajectories: ${insights.total_trajectories}`);
// Get patterns that led to success
const successPatterns = await reasoningBank.getSuccessPatterns("analyst");
console.log(`Avg improvement: ${(successPatterns.avg_improvement * 100).toFixed(1)}%`);
console.log(`Successful actions: ${successPatterns.successful_actions.join(', ')}`);
Iris Prime provides AI operations monitoring and automatic optimization for your expert agents.
Single Project:
# Evaluate project health with detailed report
npm run iris:evaluate -- --project nfl-predictor
# With JSON output for CI/CD
npm run iris:evaluate -- --project nfl-predictor --output-json report.json
# Enable auto-retrain on critical drift
npm run iris:evaluate -- --project nfl-predictor --auto-retrain
All Projects:
# Evaluate all configured projects
npm run iris:evaluate:all
# With verbose output
npm run iris:evaluate:all --verbose
Batch Evaluation:
# Process queue file (used by hooks)
npm run iris:evaluate-batch -- --queue .claude/iris-queue.jsonl
# Auto-clear queue on success
npm run iris:evaluate-batch -- --queue .claude/iris-queue.jsonl --clear-on-success
Smart Auto-Invoke:
# Check triggers and invoke if conditions met
npm run iris:auto-invoke -- --event file_edit --file src/models/expert.ts --project nfl-predictor
# Force invocation (skip trigger checks)
npm run iris:auto-invoke -- --event deployment --project nfl-predictor --force
# Dry-run mode (check triggers without invoking)
npm run iris:auto-invoke -- --event drift_detected --dry-run
Auto-Retrain:
# Retrain drifting experts for a project
npm run iris:retrain -- --project nfl-predictor
# Retrain specific expert
npm run iris:retrain -- --project nfl-predictor --expert TheAnalyst
Pattern Discovery:
# Discover transferable patterns across projects
npm run iris:patterns
# Find patterns for specific project
npm run iris:patterns -- --source nfl-predictor --target microbiome-platform
Health Check:
# Quick health check for all projects
npm run iris:health
# Detailed health with recommendations
npm run iris:health --detailed
# View all available scripts
npm run
# Get help for specific command
npm run iris:evaluate -- --help
npm run iris:auto-invoke -- --help
NFL Predictor API
Microbiome Platform
Cross-Project Intelligence
This package provides the core infrastructure that multiple domain-specific projects share:
@foxruv/agent-learning-core
├── clients/
│ ├── python-optimizer-client.ts # HTTP client for DSPy MIPROv2
│ └── swarm-coordinator.ts # Parallel expert training
├── storage/
│ ├── agentdb-optimizer-storage.ts # AgentDB persistence
│ └── reasoning-bank.ts # Trajectory learning
├── supabase/ # ✨ NEW: Centralized backend
│ ├── client.ts # Supabase client setup
│ ├── signatures.ts # Expert signature registry
│ ├── telemetry.ts # Performance tracking
│ ├── reflexions.ts # Vector-based pattern bank
│ └── consensus.ts # Multi-expert decisions
├── providers/
│ ├── lm-provider.ts # Multi-provider LLM abstraction
│ └── qwen3-provider.ts # Qwen3/local model batch inference
├── training/
│ └── dataset-core.ts # Time-aware splitting utilities
└── types/
└── index.ts # Shared TypeScript types
Domain-specific projects (NFL, microbiome, etc.) import this core and add their own:
PythonOptimizerClientHTTP client for MIPROv2 optimization service.
const client = new PythonOptimizerClient({
baseUrl: 'http://localhost:8000',
timeout: 600000 // 10 minutes
});
await client.healthCheck();
const result = await client.optimize(request);
AgentDBOptimizerStoragePersistent storage for optimized prompts.
const storage = new AgentDBOptimizerStorage({
agentdbPath: './data/optimizations.agentdb',
autoInit: true
});
await storage.storeOptimization(result);
const config = await storage.loadOptimization("expert_role");
const history = await storage.getOptimizationHistory("expert_role");
ReasoningBankManagerTrajectory-based learning system.
const reasoningBank = createReasoningBank('./data/reasoning.db');
await reasoningBank.storeTrajectory(trajectory);
const insights = await reasoningBank.getInsights("expert_role");
const patterns = await reasoningBank.analyzePatterns("expert_role");
SwarmCoordinatorParallel expert training orchestrator.
const coordinator = createSwarmCoordinator(optimizer, storage, {
max_concurrent: 3,
retry_on_failure: true,
share_learning: true
});
await coordinator.trainExperts(tasks);
const stats = coordinator.getStats();
Qwen3ProviderBatch inference with local models.
const provider = new Qwen3Provider('http://localhost:1234', 5);
const result = await provider.predict(signature, input);
const results = await provider.batchPredict(signature, inputs);
DatasetBuilderTime-aware dataset splitting.
const builder = new DatasetBuilder();
const dataset = builder.buildTemporalSplit(examples, {
strategy: 'temporal',
trainThroughKey: cutoff,
ensureNoLeakage: true
});
# Install dependencies
npm install
# Build
npm run build
# Type check
npm run typecheck
# Clean
npm run clean
MIT
FoxRuv - Building self-improving agent systems that get better with every prediction.
FAQs
Shared DSPy + AgentDB + LLM infrastructure for self-improving agents (NFL, microbiome, etc.)
We found that @foxruv/agent-learning-core demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Socket CEO Feross Aboukhadijeh joins 10 Minutes or Less, a podcast by Ali Rohde, to discuss the recent surge in open source supply chain attacks.

Research
/Security News
Campaign of 108 extensions harvests identities, steals sessions, and adds backdoors to browsers, all tied to the same C2 infrastructure.

Security News
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.