"Siri har mye pรฅ agendaen, sรฅ vi introduserer Miles Assistant โ intelligent workspace management through multiple interfaces"
Miles Assistant started as a room booking system, but has evolved into a comprehensive AI-powered workplace platform with six different interfaces, natural language processing, and intelligent automation. Whether you prefer a HAL-9000 terminal, conversational chat, visual web interface, or scriptable CLIโMiles Assistant adapts to how you work.
graph TB
subgraph Interfaces["๐จ Six Ways to Interact"]
IRIS[๐ด IRIS Terminal<br/>HAL-9000 Inspired]
CHAT[๐ฌ Chat Assistant<br/>Natural Language]
WEB[๐ Web App<br/>Visual Interface]
TUI[๐จ Terminal UI<br/>Bubble Tea]
CLI[โจ๏ธ CLI<br/>Scriptable]
MOBILE[๐ฑ Mobile<br/>Slack + ESP32]
end
subgraph Core["๐ง AI Core"]
MCP[Model Context Protocol]
LLM[Multi-LLM Support<br/>Ollama, OpenAI, Claude]
API[REST API + Auth]
end
subgraph Backend["๐พ Backend"]
DB[(PostgreSQL<br/>Prisma ORM)]
TOOLS[Booking Tools<br/>Rooms, Users, Calendar]
end
IRIS --> MCP
CHAT --> MCP
WEB --> API
TUI --> API
CLI --> API
MOBILE --> API
MCP --> LLM
MCP --> API
API --> TOOLS
TOOLS --> DB
style IRIS fill:#330000,stroke:#ff0000,color:#fff
style CHAT fill:#1a1a2e,stroke:#0f3460,color:#fff
style Core fill:#2d3436,stroke:#fdcb6e,color:#fff
style Backend fill:#2d3436,stroke:#00b894,color:#fff
| Interface | Best For | Technology | Port | Documentation |
|---|---|---|---|---|
| ๐ด IRIS | Power users who love retro-futuristic terminals | Node.js + HAL-9000 CSS | 3002 | ๐ IRIS Docs |
| ๐ฌ Chat | Natural conversation and AI assistance | Node.js + Multi-LLM | 3001 | ๐ Chat Docs |
| ๐ Web | Visual, mobile-friendly experience | React + TypeScript | 5173 | ๐ Web Docs |
| ๐จ TUI | Terminal enthusiasts and keyboard warriors | Go + Bubble Tea | - | ๐ TUI Docs |
| โจ๏ธ CLI | Automation, scripting, CI/CD | Go + Cobra | - | ๐ CLI Docs |
| ๐ฑ Mobile | Slack teams and room displays | Integration Guides | - | ๐ Guides |
- Natural Language Processing: Talk to your booking system like a colleague
- Multi-LLM Support: Choose between Ollama (local), OpenAI, or Anthropic
- Model Context Protocol: Standardized AI tool integration across all interfaces
- Intelligent Suggestions: AI recommends available times, rooms, and resolves conflicts
- IRIS Terminal: HAL-9000 inspired with CRT scanlines, pulsing red eye, typing animations
- Chat Assistant: Modern chat UI with markdown rendering, tables, and streaming responses
- Web App: React SPA with shadcn/ui components and dark mode
- Terminal UI: Vim keybindings, beautiful TUI built with Bubble Tea
- CLI: Fast, scriptable commands for automation
- Integrations: Slack bot guide, ESP32 display guide
- OpenAPI-First: Single source of truth (
api/openapi.yaml) - Generated Clients: TypeScript and Go types auto-generated
- End-to-End Safety: From database to frontend
- Multi-location: 7 offices across Norway and Lithuania
- Role-based Access: Admin, Manager, User roles
- Real-time Conflict Detection: Prevent double-bookings
- Calendar Integration: iCal export for Google Calendar, Outlook
- Feedback System: Room feedback with resolution workflows
What you'll need (click to expand)
Required:
- Node.js 20.x or higher
- PostgreSQL (or Docker)
Optional (depending on interface):
- Go 1.24.3+ (for TUI/CLI)
- Docker & Docker Compose (for containerized deployment)
- Ollama (for local AI, recommended)
For AI Features: Choose one:
- ๐ฆ Ollama (local, free, private)
- ๐ค OpenAI API key (ChatGPT)
- ๐ง Anthropic API key (Claude)
# Clone and setup everything
git clone <repo-url> miles-assistant
cd miles-assistant
./start-dev.shThis automatically:
- โ Checks prerequisites (Docker, Ollama)
- โ Pulls LLM model if needed
- โ Starts PostgreSQL in Docker
- โ Runs database migrations and seeding
- โ Starts API on port 3000
- โ Starts Chat Assistant on port 3001
- โ Performs health checks
- โ Shows you URLs and credentials
After setup completes:
| Interface | URL | Credentials |
|---|---|---|
| API Documentation | http://localhost:3000/api-docs | N/A |
| Chat Assistant | http://localhost:3001 | Login required |
| IRIS Terminal | http://localhost:3002 | Login required |
| Web App | http://localhost:5173 | Login required |
Test Accounts (all passwords: password123):
- Admin:
admin@miles.com - Manager:
manager.stavanger@miles.com - User:
john.doe@miles.com
Want the HAL-9000 experience?
cd iris
npm start
# Open http://localhost:3002Prefer chat?
cd chat-app
npm start
# Open http://localhost:3001Go developer?
./install.sh # Installs TUI and CLI
miles-booking # Launch TUI
miles login user@mail # Use CLIJust want the web UI?
cd web
npm install
npm run dev # http://localhost:5173- ๐ Getting Started Guide - Detailed setup for all components
- ๐๏ธ Architecture Overview - System design and data flow
- ๐ Legacy Booking Docs - Original comprehensive docs
- ๐ด IRIS - HAL-9000 terminal assistant
- ๐ฌ Chat Assistant - AI-powered chat with markdown
- ๐ Web App - React frontend
- ๐จ TUI - Terminal interface
- โจ๏ธ CLI - Command-line tools
- ๐ API Documentation - REST API reference
- ๐ค MCP Integration - Model Context Protocol
- ๐ OpenAPI Spec - Interactive docs at
/api-docs - ๐ฌ Slack Bot Guide - Slack integration
- ๐บ ESP32 Display Guide - Room displays
- ๐ Feedback System - Room feedback workflows
- ๐ ๏ธ Setup Guide - Manual setup instructions
- โก Quick Start - Fast track setup
| Component | Technology | Purpose |
|---|---|---|
| API | Node.js, Express, TypeScript, Prisma | Core backend with REST API and MCP server |
| IRIS | Node.js, Express, Vanilla JS | HAL-9000 inspired terminal assistant |
| Chat | Node.js, Express, marked.js | AI chat with markdown rendering |
| Web | React, TypeScript, Vite, shadcn/ui | Modern web application |
| TUI | Go, Bubble Tea, Lipgloss | Beautiful terminal interface |
| CLI | Go, Cobra | Scriptable command-line tool |
| Database | PostgreSQL, Prisma ORM | Persistent data storage |
| AI Layer | Ollama / OpenAI / Anthropic | Natural language processing |
| Protocol | Model Context Protocol (MCP) | Standardized AI tool interface |
miles-assistant/
โโโ api/ # ๐ REST API & MCP Server
โ โโโ src/
โ โ โโโ mcp/ # Model Context Protocol tools
โ โโโ prisma/ # Database schema & migrations
โ โโโ openapi.yaml # OpenAPI specification
โ
โโโ iris/ # ๐ด HAL-9000 Terminal Assistant
โ โโโ public/ # Frontend (HTML/CSS/JS)
โ โโโ server.js # MCP client + LLM integration
โ โโโ llm-providers.js # Multi-LLM abstraction
โ
โโโ chat-app/ # ๐ฌ AI Chat Assistant
โ โโโ public/ # Frontend with markdown rendering
โ โโโ server.js # Express + MCP + LLM
โ โโโ llm-providers.js # Multi-LLM support
โ
โโโ web/ # ๐ React Web App
โ โโโ src/
โ โ โโโ components/ # shadcn/ui components
โ โ โโโ lib/api/ # Generated API client
โ โ โโโ pages/ # App routes
โ โโโ package.json
โ
โโโ tui/ # ๐จ Terminal UI (Go)
โ โโโ internal/
โ โ โโโ generated/ # OpenAPI-generated types
โ โ โโโ ui/ # Bubble Tea views
โ โโโ Makefile
โ
โโโ cli/ # โจ๏ธ CLI (Go)
โ โโโ internal/
โ โ โโโ generated/ # OpenAPI-generated types
โ โ โโโ commands/ # Cobra commands
โ โโโ Makefile
โ
โโโ docs/ # ๐ Integration Guides
โ โโโ SLACK_BOT_GUIDE.md
โ โโโ ESP32_DISPLAY_GUIDE.md
โ
โโโ ARCHITECTURE.md # System architecture deep-dive
โโโ GETTING_STARTED.md # Comprehensive setup guide
โโโ docker-compose.yml # Container orchestration
โโโ start-dev.sh # Development startup script
โโโ install.sh # CLI/TUI installer
> I need a room for 6 people tomorrow at 2pm
IRIS: I found Teamrommet which seats 8 people. Would you like
to book it for 1 hour starting at 2:00 PM?
> yes, make it 2 hours
IRIS: โ Booked Teamrommet for 2025-10-21 from 14:00-16:00
# Script to book daily standup
#!/bin/bash
miles book \
--room "Focus Room" \
--start "$(date +%Y-%m-%d) 09:00" \
--duration 15 \
--title "Daily Standup" \
--recurring weeklyPress 'q' for quick book
Select room with j/k
Press Enter to book
Press '/' to search
# Start everything (database, API, chat-app)
./start-dev.sh
# Check status of all services
./status.sh
# View logs (interactive menu)
./logs.sh
# Stop all services
./stop-dev.shAPI:
cd api
npm run dev # Hot reload
npm run prisma:studio # Database GUIIRIS:
cd iris
npm run dev # Hot reload (node --watch)Chat:
cd chat-app
npm startWeb:
cd web
npm run dev
npm run generate # Regenerate API clientTUI/CLI:
cd tui # or cd cli
make generate # Generate types from OpenAPI
make build
make runComplete Docker setup with nginx reverse proxy - ๐ Full Docker Documentation
# Start all services (database, API, chat, IRIS, web, nginx)
docker-compose up -dAccess Everything via Nginx (Port 80):
- ๐ Web Frontend: http://localhost/
- ๐ API: http://localhost/api/
- ๐ฌ Chat: http://localhost/chat/
- ๐ด IRIS: http://localhost/iris/
Or Direct Service Access:
- API: http://localhost:3000
- Chat: http://localhost:3001
- IRIS: http://localhost:3002
- Web: http://localhost:3003
# Use development config with volume mounts
docker-compose -f docker-compose.yml -f docker-compose.dev.yml up
# Or hybrid: Database in Docker, services local
docker-compose up -d postgres
cd api && npm run dev
cd web && npm run devSee README-DOCKER.md for:
- ๐ Detailed setup instructions
- ๐ง Development workflows
- ๐ Troubleshooting guide
- ๐ Production deployment
Miles Assistant supports 7 office locations:
๐ณ๐ด Norway
- Stavanger (5 meeting rooms)
- Haugesund
- Oslo
- Bergen
- ร lesund
- Innlandet (Lillehammer)
๐ฑ๐น International
- Lithuania (Vilnius)
This is a Miles internal project. For development guidelines, see:
- Architecture Documentation
- Getting Started Guide
- Individual component READMEs
MIT License - see LICENSE file for details
Model Context Protocol โข OpenAPI โข Ollama โข Prisma
Built with โค๏ธ for Miles
From a booking system to a full AI assistant platform