What are Projects?

Projects = TypeScript applications that configure and run one or more agents.

Project Structure

my-project/
├── src/
│   ├── index.ts         # Entry point
│   └── character.ts     # Agent configuration
├── .env                 # Environment variables
├── package.json         # Dependencies
└── tsconfig.json        # TypeScript config

Project Definition

// src/index.ts
import { Project, ProjectAgent, IAgentRuntime } from '@elizaos/core';
import { character } from './character';

export const projectAgent: ProjectAgent = {
  character,
  init: async (runtime: IAgentRuntime) => {
    // Optional initialization logic
    console.log('Initializing:', character.name);
  },
  // plugins: [customPlugin], // Optional project-specific plugins
};

const project: Project = {
  agents: [projectAgent],
};

export default project;

## Character Configuration

```typescript
// src/character.ts
import { Character } from '@elizaos/core';

export const character: Character = {
  name: "MyAgent",
  bio: "A helpful assistant",
  plugins: [
    "@elizaos/plugin-bootstrap",
    ...(process.env.DISCORD_API_TOKEN ? ["@elizaos/plugin-discord"] : [])
  ]
};

Multi-Agent Projects

import { supportAgent, analyticsAgent } from './agents';

const supportProjectAgent: ProjectAgent = {
  character: supportAgent,
  init: async (runtime) => {
    console.log('Support agent ready');
  }
};

const analyticsProjectAgent: ProjectAgent = {
  character: analyticsAgent,
  init: async (runtime) => {
    console.log('Analytics agent ready');
  }
};

const project: Project = {
  agents: [supportProjectAgent, analyticsProjectAgent]
};

export default project;

Environment Configuration

.env
# API Keys
OPENAI_API_KEY=sk-...
DISCORD_BOT_TOKEN=...

# Database
DATABASE_URL=postgresql://localhost/mydb

# Project Settings
LOG_LEVEL=info
NODE_ENV=production

Running Projects

# Start with default character
elizaos start

# Start with specific character file
elizaos start --character character.json

# Development mode
elizaos dev

Project Templates

Starter Project

elizaos create my-agent
cd my-agent
bun install
bun start

Custom Project Setup

mkdir my-project && cd my-project
bun init
bun add @elizaos/core @elizaos/cli
bun add @elizaos/plugin-bootstrap

Example Projects

Single Agent Projects

Discord Bot

plugins: [
  "@elizaos/plugin-bootstrap",
  "@elizaos/plugin-discord"
]

Trading Bot

plugins: [
  "@elizaos/plugin-bootstrap",
  "plugin-binance",
  "plugin-dexscreener"
]

Advanced Single Agent: Spartan

Spartan showcases a sophisticated single-agent implementation:

export const spartan: Character = {
  name: "Spartan",
  bio: "Elite AI agent with advanced capabilities",
  plugins: [
    "@elizaos/plugin-bootstrap",
    "@elizaos/plugin-twitter",      // Social media presence
    "plugin-web-search",            // Research capabilities
    "plugin-code-analysis",         // Code understanding
    "plugin-sentiment",             // Emotion analysis
    "plugin-knowledge-graph"        // Complex reasoning
  ],
  // Advanced features
  settings: {
    modelProvider: "anthropic",
    responseMode: "strategic",
    memoryDepth: "extended"
  }
};

Advanced Features:

  • Multi-modal reasoning
  • Long-term memory strategies
  • Complex action chains
  • Advanced prompt engineering
  • Custom evaluation pipelines

Real-World Multi-Agent Project: The Org

The Org demonstrates a sophisticated multi-agent system:

// Multiple specialized agents working together
const project: Project = {
  agents: [
    // Executive agent - high-level decisions
    { character: ceo, init: initCEO },
    
    // Department heads - specialized domains
    { character: cto, init: initCTO },
    { character: cfo, init: initCFO },
    { character: cmo, init: initCMO },
    
    // Operational agents - specific tasks
    { character: devOps, init: initDevOps },
    { character: researcher, init: initResearcher }
  ]
};

Key Features:

  • Hierarchical agent organization
  • Inter-agent communication
  • Specialized roles and permissions
  • Shared knowledge base
  • Coordinated decision-making

Best Practices

  • Use TypeScript for better type safety
  • Load plugins conditionally based on environment
  • Keep character definitions modular
  • Test locally before deploying
  • Use elizaos dev for development

Project vs Agent

AspectAgentProject
DefinitionSingle AI personalityApplication with 1+ agents
ConfigurationCharacter interfaceProject interface
PluginsPer-characterPer-agent or shared
Use caseSimple botsComplex systems

Next Steps