Skip to content

Installation

Prerequisites

  • PHP 8.4+
  • Node.js 20+
  • Composer 2.x
  • Docker (recommended) or PostgreSQL 16+ with pgvector

Database Setup

bash
docker compose up -d

Creates PostgreSQL 16 with pgvector, iris database, and testing database.

Default credentials: user iris, password iris, port 5432.

Manual PostgreSQL

sql
CREATE DATABASE iris;
\c iris
CREATE EXTENSION vector;

Application Installation

bash
git clone https://github.com/sixlive/iris.git
cd iris
composer install
npm install
cp .env.example .env
php artisan key:generate

Environment Configuration

Edit .env:

bash
ANTHROPIC_API_KEY=your-anthropic-key
OPENAI_API_KEY=your-openai-key

# Optional - Google Calendar
GOOGLE_CLIENT_ID=your-client-id
GOOGLE_CLIENT_SECRET=your-client-secret

# Optional - Todoist
TODOIST_CLIENT_ID=your-client-id
TODOIST_CLIENT_SECRET=your-client-secret

Run Migrations

bash
php artisan migrate

Build Frontend

bash
npm run build

Generate Invite Codes

Iris uses invite-only registration. Generate invite codes before users can register:

bash
# Generate a single invite code
php artisan iris:generate-invite-codes

# Generate multiple codes
php artisan iris:generate-invite-codes 5

Share the generated codes with users who need access. Each code can only be used once.

Running Iris

bash
composer dev

Starts web server, queue worker, log viewer, and Vite dev server.

Visit http://localhost:8000.

Manual Startup

Terminal 1: php artisan serve
Terminal 2: php artisan queue:work
Terminal 3: php artisan schedule:work (optional)

User Registration

Head to /register and create a new user using the invite code that you generated earlier.

user registration

Optional: Google Calendar

  1. Create Google Cloud project and enable Calendar API
  2. Create OAuth 2.0 credentials
  3. Add to .env:
bash
GOOGLE_CLIENT_ID=your-client-id
GOOGLE_CLIENT_SECRET=your-client-secret

Optional: Todoist

  1. Create a Todoist app at developer.todoist.com
  2. Add to .env:
bash
TODOIST_CLIENT_ID=your-client-id
TODOIST_CLIENT_SECRET=your-client-secret