packages/docs/index.mdx
elizaOS ships TypeScript, Python, and Rust with identical APIs. Pick one. Start in minutes.
<CardGroup cols={3}> <Card title="TypeScript" icon="js" href="/quickstart#typescript"> The original elizaOS surface. Full Node.js ecosystem. </Card> <Card title="Python" icon="python" href="/quickstart#python"> Pythonic APIs with Pydantic models and async/await. </Card> <Card title="Rust" icon="gear" href="/quickstart#rust"> Native performance plus WebAssembly for browser deployment. </Card> </CardGroup>Eliza agents can trade onchain, manage social media, create content, analyze data, or talk to any API, blockchain, or repository.
All three implementations share identical interfaces:
| Operation | TypeScript | Python | Rust |
|---|---|---|---|
| Create runtime | new AgentRuntime({...}) | AgentRuntime(...) | AgentRuntime::new(...) |
| Initialize | await runtime.initialize() | await runtime.initialize() | runtime.initialize().await |
| Use model | runtime.useModel(type, params) | runtime.use_model(type, params) | runtime.use_model(type, params).await |
| Handle message | messageService.handleMessage(...) | message_service.handle_message(...) | message_service().handle_message(...) |
| Stop | await runtime.stop() | await runtime.stop() | runtime.stop().await |
const runtime = new AgentRuntime({ character: { name: 'Eliza', bio: 'An Eliza agent.', }, plugins: [sqlPlugin, openaiPlugin], });
await runtime.initialize(); console.log('Agent is ready!');
</Tab>
<Tab title="Python">
```python
from elizaos import AgentRuntime, Character
from elizaos_plugin_openai import get_openai_plugin
character = Character(
name="Eliza",
bio="An Eliza agent.",
)
runtime = AgentRuntime(
character=character,
plugins=[get_openai_plugin()],
)
await runtime.initialize()
print("Agent is ready!")
#[tokio::main] async fn main() -> anyhow::Result<()> { let character = parse_character(r#"{ "name": "Eliza", "bio": "An Eliza agent." }"#)?;
let runtime = AgentRuntime::new(RuntimeOptions {
character: Some(character),
plugins: vec![create_openai_plugin()?],
..Default::default()
}).await?;
runtime.initialize().await?;
println!("Agent is ready!");
Ok(())
}
</Tab>
</Tabs>
---
## Explore examples
<CardGroup cols={2}>
<Card title="Chat applications" icon="comments" href="/examples-gallery/chat-apps">
Build interactive CLI and web chat interfaces
</Card>
<Card title="REST APIs" icon="server" href="/examples-gallery/rest-apis">
Express, FastAPI, Actix, and 5 more frameworks
</Card>
<Card title="Browser apps" icon="browser" href="/examples-gallery/web-apps">
React, Next.js, and pure HTML implementations
</Card>
<Card title="Serverless" icon="cloud" href="/examples-gallery/serverless">
AWS Lambda, GCP Functions, Vercel, Cloudflare Workers
</Card>
</CardGroup>
---
## Get started
<CardGroup cols={2}>
<Card
title="Installation"
icon="download"
href="/installation"
horizontal
/>
<Card
title="Create a Plugin"
icon="wrench"
href="/plugins/create-a-plugin"
horizontal
/>
<Card
title="API Reference"
icon="terminal"
href="/api-reference"
horizontal
/>
<Card
title="CLI Reference"
icon="command"
href="/cli-reference/overview"
horizontal
/>
</CardGroup>
---
## Design philosophy
**Ship fast** — Three commands to a live agent. No boilerplate, no config hell.
**Any language** — TypeScript, Python, or Rust. Same APIs, same capabilities.
**Scale freely** — Start with a character file. Scale to millions of interactions.
**Truly open** — Every line is open source. Extend through plugins, contribute to core, build the future together.
<Card
title="Contribute to core"
icon="code-branch"
href="/guides/contributing"
>
Join the community building the agentic operating system
</Card>