Building Autonomous Agents in TypeScript: A Look at elizaOS
You've probably noticed that building an AI agent that actually does things—remembers context, talks to your calendar, pokes at your browser, maybe runs on your phone—means stitching together a dozen libraries and hoping they play nice. elizaOS is an attempt to give that work a proper home: an open-source TypeScript framework and product stack for autonomous AI agents, packaged as a monorepo with a core runtime, a user-facing app, a CLI, cloud services, native bridges, and first-party plugins.
What It Does
At its core, elizaOS is a TypeScript framework for running autonomous AI agents. The repository is a monorepo that bundles the core runtime together with the Eliza app (which targets web, desktop, and mobile), the CLI, cloud services, native bridges, and a set of first-party plugins. There's also Linux and Android distribution tooling living under packages/os for people who want to run an entire device as elizaOS.
The capabilities on offer are broad. According to the README, the Eliza app handles chat, voice, memory, knowledge, and document workflows, plus messaging and workspace connectors, personal-assistant domains like calendar, reminders, inbox, goals, and health, browser and desktop automation, native device bridges for camera, phone, messages, contacts, and location, non-custodial EVM and Solana wallet operations with approval boundaries, and scheduled workflows and coding-agent orchestration. Availability depends on your OS, installed plugins, granted permissions, and configured model or service providers—the package-level READMEs document the exact setup for each piece.
Why It's Cool
-
It's a full stack, not just a library. Plenty of frameworks give you an agent loop and leave the rest to you. elizaOS ships the runtime, the app, the CLI, cloud services, and plugins in one repo. That means you're not hunting down five separate projects to get something running end to end.
-
The local-first path is real.
bun run dev:localspins up the app and API with a runtime chooser where you supply your own provider keys—Cloud sign-in isn't required. For anyone who's been burned by "just sign up for our hosted service" onboarding, that's a welcome default. -
Device bridges are first-class. The native bridges for camera, phone, messages, contacts, and location suggest the project takes mobile seriously rather than treating it as an afterthought. Combined with the
packages/ostooling, there's a genuine path toward running an agent on a whole device. -
Wallet operations come with boundaries. Non-custodial EVM and Solana support is paired with approval boundaries—a sensible design decision for anything touching money.
-
Benchmarks are built in. There's a Python-based benchmark orchestrator you can run against providers and models. It's not glamorous, but having an evaluation harness in the repo is a sign the project cares about measuring agent behavior rather than just demoing it.
-
The setup is scripted.
bun installreportedly prepares submodules and patches, provisions host build prerequisites, and builds or verifies a staged desktop inference library. The embedding model downloads automatically during warmup. That's a lot of yak-shaving handled for you.
How to Try It
If you just want to use Eliza, the README points you to the web app, the downloads page, or a published GitHub release. If you want to run it from source, start by installing the Bun and Node versions pinned in package.json, then:
git clone --filter=blob:none https://github.com/elizaos/eliza.git
cd eliza
bun install
bun run dev
A few commands worth knowing once you're in:
bun run dev:local # app + API with the runtime chooser
bun run start # standalone agent host (API only, no UI)
bun run build # build the workspace with Turbo
bun run verify # dependency, type, lint, and audit gates
bun run test # repository end-to-end test lane
If you're building an agent or plugin, the README directs you to the runtime and the developer docs. If you want to run benchmarks, you'll need Python 3.11+ and the suite's dependencies:
PYTHONPATH=packages python3 -m benchmarks.orchestrator list-benchmarks
PYTHONPATH=packages python3 -m benchmarks.orchestrator run --benchmarks <id> --provider <provider> --model <model>
Live benchmarks need the provider's credentials and may cost you in usage fees. The repository is at github.com/elizaOS/eliza.
Final Thoughts
elizaOS is aiming at a big target: a single, coherent stack for agents that spans the runtime, the UI, the cloud, and the device. That ambition is also its main caution—this is a large monorepo with a lot of moving parts, and the README itself notes that capabilities vary by OS, plugin, permission, and provider. It's probably best suited to developers who want an integrated foundation rather than a minimal library, and who are comfortable working inside a substantial codebase. If that sounds like your situation, the local-first dev path makes it easy enough to kick the tires before committing.