Skip to content

suenyiyang/mano

Repository files navigation

Mano

A full-stack AI chat application with multi-turn conversations, configurable agents, and extensible tool support.

Home

Chat

Tech Stack

Layer Technology
Frontend React 19, Vite 8, Tailwind CSS, shadcn/ui, TanStack Query
Backend Hono 4, Node.js, Drizzle ORM, PostgreSQL
Agent DeepAgents, LangChain, MCP SDK
LLM Providers Volcengine, OpenAI, Anthropic

Project Structure

mano/
β”œβ”€β”€ apps/
β”‚   β”œβ”€β”€ frontend/              React SPA (@mano/frontend)
β”‚   └── backend/               Hono API server (@mano/backend)
β”œβ”€β”€ packages/
β”‚   β”œβ”€β”€ agent/                 AI agent library (@mano/agent)
β”‚   └── langchain-volcengine/  Custom Volcengine LLM provider
β”œβ”€β”€ biome.json
β”œβ”€β”€ pnpm-workspace.yaml
└── tsconfig.json

Features

  • Multi-session chat with persistent history
  • SSE streaming with resumable event replay
  • Agent interrupts β€” agents can pause and ask users for input
  • Session forking β€” branch conversations from any message
  • Message compaction β€” summarize history to reduce token usage
  • Custom skills β€” user-defined reusable prompts and tools
  • MCP integration β€” connect to Model Context Protocol servers
  • Multiple LLM providers β€” Volcengine, OpenAI, Anthropic
  • OAuth β€” GitHub and Google sign-in
  • Rate limiting β€” per-tier, per-day, per-minute controls
  • i18n β€” multi-language support

Getting Started

Prerequisites

  • Node.js β‰₯ 24
  • pnpm 10
  • PostgreSQL

Setup

# Install dependencies
pnpm install

# Configure environment variables (see below)
cp apps/backend/.env.example apps/backend/.env

# Run database migrations
pnpm --filter @mano/backend drizzle-kit migrate

# Start all projects in dev mode
pnpm dev

The frontend runs at http://localhost:5173 and the backend at http://localhost:3000.

Environment Variables

# Required
DATABASE_URL=postgres://user:password@localhost:5432/mano

# LLM Providers (at least one required)
VOLCENGINE_API_KEY=
OPENAI_API_KEY=
ANTHROPIC_API_KEY=

# Web Search (optional)
TAVILY_API_KEY=
VOLCENGINE_SEARCH_API_KEY=

# OAuth (optional)
GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=

# Defaults
PORT=3000
FRONTEND_URL=http://localhost:5173

Development

pnpm dev          # Run all projects in parallel
pnpm build        # Build all
pnpm check        # Biome lint & format check
pnpm check:fix    # Auto-fix lint & format issues
pnpm typecheck    # TypeScript check all projects
pnpm test         # Unit tests (backend + agent, vitest)
pnpm test:e2e     # Frontend E2E tests (Playwright)

Running individual packages

pnpm --filter @mano/frontend dev
pnpm --filter @mano/backend dev
pnpm --filter @mano/backend drizzle-kit generate   # Generate migration
pnpm --filter @mano/backend drizzle-kit migrate     # Apply migrations

License

Private

About

Tiny tiny open-source Manus. Build on top of LangChain and DeepAgents πŸ¦œπŸ”—.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages