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 [email protected]
# 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

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