A modern, multi-tenant platform for building and managing AI Agents.
Platypus is an open-source, full-stack application designed to help you build AI agents. Built with a focus on extensibility and modern web standards, Platypus allows you to create agents that can reason, use tools, and interact with the world.
Note
Platypus is currently a Work In Progress. Features are being added rapidly.
- 🏢 Multi-Tenancy: Built-in support for Organizations and Workspaces to isolate data and manage teams.
- 🤖 Agentic Workflows: Create sophisticated agents with custom system prompts, model configurations, and tool assignments.
- 🛠️ Extensible Tool System: Register custom tools that agents can invoke intelligently to perform complex tasks.
- ✨ Skills: Create reusable instruction sets that agents can dynamically load on-demand to handle specialized tasks.
- 🔌 MCP Support: First-class support for the Model Context Protocol (MCP), allowing agents to securely connect to local and remote data sources.
- ⚡ Modern Tech Stack: Built on the bleeding edge with Next.js, Hono.js, Drizzle ORM, and Tailwind CSS.
- 🌐 Provider Agnostic: Powered by the Vercel AI SDK, supporting OpenAI, Anthropic, Google, Amazon Bedrock, and OpenRouter.
- ⚖️ MIT Licensed: Open source and free to use.
Platypus is a monorepo managed by Turborepo, ensuring a fast and efficient development workflow.
apps/frontend: A responsive web interface built with Next.js, ShadCN, and Tailwind. It uses the AI SDK for real-time streaming responses.apps/backend: A high-performance REST API built with Hono.js running on Node.js. It handles agent logic, tool execution, and database interactions.packages/schemas: Shared Zod schemas used by both frontend and backend for end-to-end type safety.
The fastest way to get Platypus running is using Docker Compose.
-
Configure environment:
Clone the repository, create a
compose.override.yamlfile (or editcompose.yamldirectly) and set the following environment variables:BETTER_AUTH_SECRET: A secure random string (minimum 32 characters).ADMIN_EMAIL: The email address for the initial admin user.ADMIN_PASSWORD: A secure password for the initial admin user.TIMEZONE(optional): IANA timezone name for e.g., "America/New_York", "Europe/London". Defaults to UTC.
services: backend: environment: BETTER_AUTH_SECRET: "your-secure-random-string-here" ADMIN_EMAIL: "admin@example.com" ADMIN_PASSWORD: "your-secure-password-here" TIMEZONE: "UTC"
-
Start the application:
docker compose up -d
-
Sign in:
Navigate to
http://localhost:3000and sign in with the default credentials configured via theADMIN_EMAILandADMIN_PASSWORDenvironment variables.
Caution
Change the default password after your first login!
- Docker (for the local Postgres database)
- Node.js v24+
- pnpm
- An AI Provider API Key (e.g., OpenRouter, OpenAI)
-
Install dependencies:
pnpm install
-
Configure Environment: Create
.envfiles for both apps:cp apps/frontend/.example.env apps/frontend/.env cp apps/backend/.example.env apps/backend/.env
Edit
apps/backend/.envand set the following environment variables:BETTER_AUTH_SECRET: A secure random string (minimum 32 characters).ADMIN_EMAIL: The email address for the initial admin user.ADMIN_PASSWORD: A secure password for the initial admin user.TIMEZONE(optional): IANA timezone name for e.g., "America/New_York", "Europe/London". Defaults to UTC.
BETTER_AUTH_SECRET: "your-secure-random-string-here" ADMIN_EMAIL: "admin@example.com" ADMIN_PASSWORD: "your-secure-password-here" TIMEZONE: "UTC"
-
Start Development Server: This command starts the frontend, backend, and a local Postgres container.
pnpm dev
-
Initialize Database: Apply the schema to your local database (ensure
pnpm devis running first).pnpm drizzle-kit-push
-
Sign in: Navigate to
http://localhost:3001and sign in with the default credentials configured in your.envfile (ADMIN_EMAILandADMIN_PASSWORD).
Caution
Change the default password after your first login!
Contributions are welcome! Please feel free to submit a Pull Request.
Platypus logo by Thiings.co
