- Pre-configured project structure for ElizaOS development
- Comprehensive testing setup with component and e2e tests
- Default character configuration with plugin integration
- Example service, action, and provider implementations
- TypeScript configuration for optimal developer experience
- Built-in documentation and examples
# Create a new project
elizaos create -t project my-project
# Dependencies are automatically installed and built
# Navigate to the project directory
cd my-project
# Start development immediately
elizaos dev
# Start development with hot-reloading (recommended)
elizaos dev
# OR start without hot-reloading
elizaos start
# Note: When using 'start', you need to rebuild after changes:
# bun run build
# Test the project
elizaos test
ElizaOS provides a comprehensive testing structure for projects:
-
Component Tests (
__tests__/
directory):- Unit Tests: Test individual functions and components in isolation
- Integration Tests: Test how components work together
- Run with:
elizaos test component
-
End-to-End Tests (
e2e/
directory):- Test the project within a full ElizaOS runtime
- Run with:
elizaos test e2e
-
Running All Tests:
elizaos test
runs both component and e2e tests
Component tests use Vitest:
// Unit test example (__tests__/config.test.ts)
describe('Configuration', () => {
it('should load configuration correctly', () => {
expect(config.debug).toBeDefined();
});
});
// Integration test example (__tests__/integration.test.ts)
describe('Integration: Plugin with Character', () => {
it('should initialize character with plugins', async () => {
// Test interactions between components
});
});
E2E tests use ElizaOS test interface:
// E2E test example (e2e/project.test.ts)
export class ProjectTestSuite implements TestSuite {
name = 'project_test_suite';
tests = [
{
name: 'project_initialization',
fn: async (runtime) => {
// Test project in a real runtime
},
},
];
}
export default new ProjectTestSuite();
The test utilities in __tests__/utils/
provide helper functions to simplify writing tests.
Customize your project by modifying:
src/index.ts
- Main entry pointsrc/character.ts
- Character definition