owly
Health Warn
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 6 GitHub stars
Code Fail
- rm -rf — Recursive force deletion command in .claude/settings.local.json
- process.env — Environment variable access in prisma.config.ts
Permissions Pass
- Permissions — No dangerous permissions requested
This tool is a self-hosted, AI-powered customer support agent designed for small businesses. It integrates with WhatsApp, email, and phone channels to automate and manage customer inquiries via a single dashboard.
Security Assessment
Overall Risk: Medium. The tool processes highly sensitive data, including customer communications, email credentials (IMAP/SMTP), and WhatsApp sessions, requiring strict environment variable management. The automated scan flagged a `rm -rf` recursive force deletion command inside a `.claude/settings.local.json` file, which is unusual and warrants manual review to ensure it does not accidentally delete critical files during setup or operation. Additionally, there is environment variable access via `prisma.config.ts` for database connections. While no hardcoded secrets or dangerous system permissions were found, the nature of the data it handles inherently elevates its risk profile.
Quality Assessment
The project is relatively new but under active development, with its most recent code push occurring today. It uses a permissive MIT license and includes comprehensive documentation, screenshots, and a detailed wiki. However, community trust and visibility are currently very low, as evidenced by only 6 GitHub stars. Developers should anticipate the typical growing pains and potential security blind spots of an early-stage open-source project.
Verdict
Use with caution: Verify the flagged `rm -rf` command before deploying, and strictly secure your environment variables given the sensitive customer data this agent handles.
AI-powered customer support agent with WhatsApp, Email & Phone channels
Features · Screenshots · Quick Start · Configuration · API · Tech Stack · Wiki · Roadmap
What is Owly?
Owly is a self-hosted AI customer support agent that small businesses and individuals can run on their own machines -- completely free. Connect your WhatsApp, Email, and Phone channels, add your business knowledge, and let the AI handle customer inquiries 24/7.
|
Zero Cost No monthly fees. You only pay for AI API usage. |
Your Data, Your Server Everything runs on your machine. Complete privacy. |
Multi-Channel WhatsApp, Email, and Phone from a single dashboard. |
5-Minute Setup Docker Compose or npm. Guided setup wizard. |
Features
Multi-Channel Support
Connect all your customer communication channels in one place.
|
Connect via QR code scan or Business API. Handles text, images, voice messages, and documents. |
IMAP/SMTP with any provider. Branded HTML templates with automatic thread tracking. |
PhoneTwilio Voice with OpenAI Whisper (STT) and ElevenLabs (TTS) for natural voice conversations. |
Connect and manage all channels from one screen
AI-Powered Conversations
Owly uses OpenAI GPT (extensible to Claude, Ollama) with your knowledge base to provide accurate, on-brand responses. During conversations, the AI can autonomously:
- Create tickets when customers report problems
- Route issues to the right department based on expertise matching
- Send internal emails to notify team members about urgent issues
- Look up customer history for context-aware support
- Trigger webhooks to notify external systems
- Schedule follow-ups for proactive customer care
Unified inbox with conversation thread and admin takeover
Customer CRM
Every customer gets a unified profile across all channels -- conversations, notes, tags, and contact history in one place.
Customer profiles with notes, tags, and cross-channel history
Knowledge Base
Train your AI with your business information. Organize entries into categories, set priorities, and test responses before going live.
Categories with entry counts and color coding |
Entries with priority levels and active toggles |
Automation Engine
Automate repetitive tasks with rule-based automation, business hours, SLA tracking, and canned responses.
Auto-route, auto-tag, auto-reply, keyword alerts |
Quick reply templates with shortcuts |
Weekly schedule with timezone and offline messages |
Response time targets per channel and priority |
Team & Ticket Management
Organize your team into departments, track issues with a full ticket system, and monitor performance.
Departments, members, expertise, and availability |
Priority levels, assignments, and status tracking |
Analytics & Insights
Monitor your support performance with charts, metrics, and team performance tracking.
Conversation trends, channel breakdown, ticket distribution, and satisfaction scores
Administration & API
Manage users, API keys, webhooks, and explore the full REST API with interactive documentation.
Multi-admin with roles and API key management |
Interactive API docs with live request testing |
Dark Mode
Full dark theme with persistent preference, applied across all 19 pages.
Dark mode dashboard with consistent styling across all components
More Features
6-tab settings: General, AI, Voice, Phone, Email, WhatsApp |
Webhook management with payload preview and testing |
Quick Start
Prerequisites
- Node.js 20+
- PostgreSQL 16+
Option 1: npm
# Clone the repository
git clone https://github.com/hsperus/owly.git
cd owly
# Install dependencies
npm install
# Set up environment
cp .env.example .env
# Edit .env with your database URL and API keys
# Run database migrations
npx prisma migrate dev
# (Optional) Load sample data with a default admin account
npm run db:seed
# Default login: username=admin, password=admin123
# Start the development server
npm run dev
Option 2: Docker Compose
git clone https://github.com/hsperus/owly.git
cd owly
cp .env.example .env
# Edit .env with your API keys
docker compose up -d
Open http://localhost:3000 -- the setup wizard will guide you through the initial configuration.
Clean login page with Owly branding
Configuration
All configuration is done through the admin dashboard -- no config files to edit after initial setup:
| Setting | Location | Description |
|---|---|---|
| Business profile | Settings > General | Name, description, welcome message, tone |
| AI provider | Settings > AI Configuration | OpenAI / Claude / Ollama, model, API key |
| Voice | Settings > Voice | ElevenLabs API key and voice selection |
| Phone | Settings > Phone | Twilio Account SID, auth token, phone number |
| Settings > Email | SMTP and IMAP server configuration | |
| Channels > WhatsApp | QR code scan or Business API | |
| Team | Team | Departments, members, expertise areas |
| SLA | SLA Rules | Response and resolution time targets |
| Schedule | Business Hours | Weekly availability and offline messages |
| Automation | Automation | Auto-route, auto-tag, auto-reply rules |
| Templates | Canned Responses | Pre-written reply templates |
| Integrations | Webhooks | External service connections |
API
Owly provides a full REST API. Interactive documentation with live testing is available at /api-docs in the dashboard.
# Send a message and get AI response
curl -X POST http://localhost:3000/api/chat \
-H "Content-Type: application/json" \
-H "X-API-Key: your_api_key" \
-d '{"message": "What are your business hours?", "channel": "api"}'
# Response:
# {"conversationId": "...", "response": "We are open Monday to Friday, 9 AM to 6 PM..."}
# Health check
curl http://localhost:3000/api/health
# {"status": "ok", "version": "0.1.0", "database": "connected"}
View all endpoints
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/chat |
Send message, get AI response |
GET POST |
/api/conversations |
List or create conversations |
GET PUT DELETE |
/api/conversations/:id |
Manage a conversation |
POST |
/api/conversations/:id/messages |
Add message (admin takeover) |
POST |
/api/conversations/:id/satisfaction |
Rate conversation (1-5) |
POST |
/api/conversations/:id/notes |
Add internal note |
GET POST |
/api/customers |
List or create customers |
GET PUT DELETE |
/api/customers/:id |
Manage a customer |
GET POST |
/api/tickets |
List or create tickets |
GET PUT DELETE |
/api/tickets/:id |
Manage a ticket |
GET POST |
/api/knowledge/categories |
Knowledge categories |
GET POST |
/api/knowledge/entries |
Knowledge entries |
POST |
/api/knowledge/test |
Test AI with a question |
GET PUT |
/api/settings |
Application settings |
GET |
/api/analytics?period=7d |
Analytics data |
GET |
/api/export?type=conversations&format=csv |
Export (CSV/JSON) |
GET POST |
/api/automation |
Automation rules |
GET PUT |
/api/business-hours |
Business hours config |
GET POST |
/api/sla |
SLA rules |
GET POST |
/api/canned-responses |
Canned responses |
GET POST |
/api/webhooks |
Webhook management |
POST |
/api/webhooks/test |
Test a webhook |
GET POST |
/api/admin/users |
Admin user management |
GET POST |
/api/admin/api-keys |
API key management |
GET |
/api/activity |
Activity audit log |
GET |
/api/health |
Health check |
Tech Stack
| Layer | Technology |
|---|---|
| Framework | Next.js 14 (App Router) |
| Language | TypeScript |
| Database | PostgreSQL + Prisma ORM |
| UI | Tailwind CSS |
| AI | OpenAI GPT (extensible to Claude, Ollama) |
| Voice TTS | ElevenLabs |
| Voice STT | OpenAI Whisper |
| Phone | Twilio Voice API |
| whatsapp-web.js | |
| Auth | JWT + bcrypt |
| Charts | Pure CSS/SVG (zero dependencies) |
| Deployment | Docker Compose |
Project Structure
owly/
├── prisma/ # Database schema, migrations, seed
├── public/ # Static assets (logo)
├── docs/
│ ├── screenshots/ # UI screenshots (20 images)
│ └── wiki/ # Full documentation (25 pages)
├── src/
│ ├── app/
│ │ ├── (auth)/ # Login, setup wizard
│ │ ├── (dashboard)/ # 19 dashboard pages
│ │ └── api/ # 55+ REST API endpoints
│ ├── components/
│ │ ├── layout/ # Sidebar, header
│ │ └── ui/ # 12 reusable components
│ └── lib/
│ ├── ai/ # AI engine, tools, types
│ ├── channels/ # WhatsApp, email, phone
│ └── hooks/ # Theme hook
├── docker-compose.yml
├── Dockerfile
└── .env.example
Documentation
Full documentation is available in the Wiki:
Roadmap
- Embeddable live chat widget for customer websites
- WebSocket real-time updates
- Vector embeddings for semantic knowledge search
- Visual AI tool builder
- Public knowledge base (self-service)
- Customer self-service portal
- Visual workflow builder
- Telegram, Instagram, SMS channels
- Shopify / WooCommerce integration
- Sentiment analysis
- Mobile admin (PWA)
- Multi-tenant / white-label
Contributing
Contributions are welcome! See the Contributing Guide for details.
# Fork, clone, and create a branch
git checkout -b feature/your-feature
# Make changes and commit
git commit -m 'feat: add your feature'
# Push and open a PR
git push origin feature/your-feature
License
MIT License - see LICENSE for details.

Owly -- AI Customer Support, Made Simple
Built with Next.js, TypeScript, and PostgreSQL
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found