Skip to main content

Prerequisites

Before you begin, ensure you have the following installed:
  • Node.js (v18 or higher)
  • pnpm (v9.15.4 or higher)
  • Python (v3.9 or higher)
  • Rust (latest stable) - for native modules
  • Git - for version control
# Install Node.js from https://nodejs.org/

# Install pnpm globally
npm install -g pnpm@9.15.4
# Download Python from https://www.python.org/downloads/

# Verify installation
python --version
# Install Rust using rustup
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# Verify installation
rustc --version

Installation

1

Clone the Repository

git clone https://github.com/BowArrow/olis.git
cd olis
2

Install Dependencies

# Install JavaScript/TypeScript dependencies
pnpm install

# Install Python dependencies
pip install -r requirements.txt
3

Set Up Environment Variables

Create a .env file in the root directory:
# Copy example env file
cp .env.example .env

# Edit .env with your configuration
Key environment variables:
  • OLIS_INTENT_MODEL - Model name for intent detection
  • OLIS_INTENT_REMOTE_URL - URL for hosted intent service
  • OLIS_DOCS_FOLDER - Path to document folder for context
4

Build Native Modules

# Build Rust native modules
cd apps/electron-client
pnpm run sidecar:build
cd ../..

Running the Applications

Electron Desktop Client

cd apps/electron-client
pnpm run electron:dev
The desktop application will start on http://localhost:3000 in development mode.

API Server

cd apps/api-server
python -m uvicorn main:app --reload

Chrome Extension

cd apps/chrome-extension
pnpm run build

# Load the extension in Chrome:
# 1. Open chrome://extensions/
# 2. Enable "Developer mode"
# 3. Click "Load unpacked"
# 4. Select the apps/chrome-extension/dist directory

Verify Installation

Run the following commands to verify everything is set up correctly:
# From the root directory
pnpm run build
pnpm run test
pnpm run lint
pnpm nx graph
This will open a browser showing your project’s dependency graph.

Next Steps

Explore Architecture

Learn about the system architecture and design patterns

Development Guide

Deep dive into development workflows and best practices

API Reference

Explore the API endpoints and integration options

Contributing

Learn how to contribute to the Olis project

Troubleshooting

If you encounter errors building native modules:
# Clean and rebuild
pnpm run clean
pnpm install

# Rebuild native modules specifically
cd apps/electron-client
pnpm run install-app-deps
Windows Note: If Electron is running, it may lock keytar.node. Stop all Electron instances before rebuilding.
If port 3000 is already in use:
# Find and kill the process using port 3000
# Windows
netstat -ano | findstr :3000
taskkill /PID <PID> /F

# macOS/Linux
lsof -ti:3000 | xargs kill -9
If you encounter Python dependency issues:
# Create a virtual environment
python -m venv venv

# Activate it
# Windows
.\venv\Scripts\activate

# macOS/Linux
source venv/bin/activate

# Install dependencies
pip install -r requirements.txt