This repository is a downstream mirror. Source of truth lives in the
messai-aimonorepo; this mirror is updated on each release. Issues and Discussions are welcome here. PRs against this mirror will be redirected — see CONTRIBUTING.md.History was reset as part of the 2026 monorepo consolidation. Versions tagged before that (e.g.
v0.2.0) remain accessible as historical refs.
Multi-agent research orchestration framework for MES research
MESS-Agents provides a multi-agent framework for orchestrating research workflows:
- Base Agent Framework - Abstract agent class for custom agents
- Agent Orchestrator - Multi-agent coordination patterns
- Literature Analyzer - Paper analysis patterns
- Insights Generator - Finding synthesis
- Knowledge Graph Builder - Graph construction
- PDF Processor - Document processing
Not yet published to npm. This package is source-available here while its public API stabilises. Use it by cloning the mirror:
git clone https://github.com/Messai-io/MESS-Agents.git
cd MESS-Agents && pnpm install && pnpm buildTrack the packaging issue for the npm release.
import { BaseAgent, AgentConfig } from '@messai-io/mess-agents';
class CustomResearchAgent extends BaseAgent {
constructor(config: AgentConfig) {
super({
name: 'CustomResearcher',
capabilities: ['literature_search', 'data_analysis'],
...config,
});
}
async execute(task: Task): Promise<Result> {
// Custom implementation
const papers = await this.searchLiterature(task.query);
const analysis = await this.analyze(papers);
return { findings: analysis };
}
}import { AgentOrchestrator } from '@messai-io/mess-agents';
const orchestrator = new AgentOrchestrator({
maxConcurrency: 5,
timeout: 60000,
costOptimization: true,
});
// Register agents
orchestrator.register(new LiteratureAgent());
orchestrator.register(new AnalysisAgent());
orchestrator.register(new SynthesisAgent());
// Execute workflow
const results = await orchestrator.execute({
task: 'Analyze biofilm conductivity in MFCs',
workflow: 'literature_review',
});import { LiteratureAnalyzer } from '@messai-io/mess-agents';
const analyzer = new LiteratureAnalyzer({
maxPapers: 100,
dateRange: { start: '2020-01-01', end: '2025-01-01' },
});
const analysis = await analyzer.analyze({
query: 'microbial fuel cell power density',
focusAreas: ['materials', 'performance', 'scale-up'],
});
console.log(analysis.keyFindings);
console.log(analysis.researchGaps);
console.log(analysis.trends);import { InsightsGenerator } from '@messai-io/mess-agents';
const generator = new InsightsGenerator();
// Synthesize findings from multiple sources
const insights = await generator.synthesize({
sources: [literatureAnalysis, experimentalData, modelPredictions],
focusQuestion: 'What limits MFC power output?',
});
console.log(insights.mainConclusions);
console.log(insights.confidenceLevel);
console.log(insights.supportingEvidence);import { KnowledgeGraphBuilder } from '@messai-io/mess-agents';
const builder = new KnowledgeGraphBuilder();
// Build knowledge graph from papers
const graph = await builder.build({
papers: analyzedPapers,
entityTypes: ['material', 'organism', 'parameter', 'application'],
relationTypes: ['uses', 'produces', 'inhibits', 'enhances'],
});
// Query the graph
const related = graph.query({
entity: 'Geobacter',
relation: 'produces',
depth: 2,
});import { PDFProcessor } from '@messai-io/mess-agents';
const processor = new PDFProcessor({
extractFigures: true,
extractTables: true,
extractEquations: true,
});
const document = await processor.process('paper.pdf');
console.log(document.text);
console.log(document.figures);
console.log(document.tables);
console.log(document.references);Pre-built workflow templates for common research tasks:
import { Workflows } from '@messai-io/mess-agents';
// Literature review workflow
const review = await Workflows.literatureReview({
topic: 'MFC cathode materials',
depth: 'comprehensive',
});
// Gap analysis workflow
const gaps = await Workflows.gapAnalysis({
field: 'bioelectrochemical_systems',
timeRange: '2020-2025',
});
// Hypothesis generation workflow
const hypotheses = await Workflows.generateHypotheses({
observations: experimentalResults,
priorKnowledge: literatureFindings,
});Built-in cost optimization for LLM usage:
const orchestrator = new AgentOrchestrator({
costOptimization: {
enabled: true,
maxCostPerTask: 1.0, // USD
preferLocalModels: true,
cacheResults: true,
},
});We welcome contributions! See CONTRIBUTING.md for guidelines.
MIT License - see LICENSE for details.