LocalAgent-LLM is a full-stack TypeScript application designed as a powerful local AI assistant. It enables you to chat with a Large Language Model (LLM), execute code, manage files, and leverage custom tools. All from a clean, tabbed web interface.
Additional screenshots | Detailed overview
- Next-gen UI: Built with React, Vite, TailwindCSS, shadcn/ui, and Radix primitives for a beautiful, accessible, and modular interface.
- Multi-Workspace Project Management: Organize, browse, and control files and codebases.
- Command/Chat/Memory Tools: Integrated agent command log, memory, and quick commands.
- Live Output: Real-time rendering of LLM and system responses.
- LLM Model Switching: Easily switch between supported models (Ollama, Gemini and OpenRouter API Keys).
- Authentication: Local/passport or OIDC support (WIP).
- Database: PostgreSQL via Drizzle ORM, with schema in
/shared/schema.ts. - Type-safe Sharing: Shared types and schema between client and server.
- API-first: RESTful Express API with session management.
- Component Aliasing: Clean imports via Vite + tsconfig + shadcn/ui config.
- Frontend: React + Vite + TypeScript
- Styling: TailwindCSS, shadcn/ui, Radix UI, framer-motion, Lucide, FontAwesome
- Backend: Express, TypeScript, REST API, ws (WebSockets)
- Database: PostgreSQL, Drizzle ORM, drizzle-kit migrations
- Auth: passport, passport-local
- Other: axios, zod, TanStack Query, embla-carousel, recharts, etc.
.
├── client/ # React frontend (Vite, Tailwind, shadcn/ui)
│ └── src/
├── server/ # Express backend (TypeScript)
├── shared/ # Shared types & DB schema (TypeScript)
├── drizzle/ # Drizzle ORM migration output
├── dist/ # Build output (production)
├── package.json
├── tsconfig.json
├── tailwind.config.ts
├── vite.config.ts
└── ...etc
npm install-
Edit the
.envfor your database, LLM endpoints, API keys etc.
npm run migrateRuns both backend and frontend using concurrently + nodemon:
npm run dev- Backend: http://localhost:5000
- Frontend: http://localhost:5173 (proxied API)
npm run build
npm startImport paths are aliased for DX:
@/components,@/lib,@/hooks, etc. →client/src/...@shared/*→shared/*
Configured in tsconfig.json, vite.config.ts, and components.json.
- Tailwind: Uses custom color variables for themes/dark mode.
- shadcn/ui: Modern UI kit (
components.json). - Radix UI: Accessible primitives.
- Drizzle ORM: Schema in
shared/schema.ts - Migrations:
drizzle-kitCLI (npm run migrate) - Config: See
drizzle.config.ts
| Script | Purpose |
|---|---|
dev |
Run client & server in parallel |
dev:client |
Frontend only (Vite) |
dev:server |
Backend only (Nodemon+TSX) |
build |
Build frontend & bundle backend |
start |
Run production server |
migrate |
Run DB migrations |
check |
TypeScript check |
- Fork & clone
npm install- PRs welcome!
- postcss.config.js: Tailwind + autoprefixer
- tailwind.config.ts: Theme/colors, plugin setup
- components.json: shadcn/ui config
- vite.config.ts: Vite + aliases, proxy, etc.
- tsconfig.json: Paths, strictness, etc.
- drizzle.config.ts: DB config
MIT
Open an issue or discussions.