Skip to content

iblai/os

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,821 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ibl.ai

OS

The open-source AI agent platform.

Build, deploy, and manage intelligent conversational agents — from prototype to production — in minutes.

Website Docs License: MIT Next.js macOS iOS Android Surface

Demo by Miguel Amigot, CTO at ibl.ai

Demo by Miguel Amigot, CTO at ibl.ai

Features · Screenshots · Quick Start · Deployment · Troubleshooting · Testing · Contributing


Features

  • AI Agents — Create custom agents with configurable LLMs, system prompts, tools, and safety filters
  • RAG Training — Upload documents, connect Google Drive, OneDrive, Dropbox, or crawl websites to ground agents in your data
  • Voice Calls — Real-time WebRTC voice chat powered by LiveKit
  • Deep Research — Extended multi-step reasoning for complex queries
  • Canvas / Artifacts — Generate, edit, and version rich documents alongside chat
  • Screen Sharing — Share your screen directly inside a chat session
  • Web Search — Ground responses with live web results
  • MCP Servers — Extend agent capabilities with Model Context Protocol tool servers
  • Analytics — Usage dashboards, topic analysis, transcript viewer, and financial reporting
  • Projects — Collaborative workspaces to group agents with shared context and goals
  • Cross-Platform — Ships as web, desktop (macOS, Windows, Linux), and mobile (iOS, Android)
  • Multi-tenancy — Full tenant isolation with per-org configuration, branding, and user management
  • SSO — Single Sign-On with configurable identity providers (OAuth, OIDC, SAML)
  • RBAC — Granular role-based access control with policies and group-based permissions
  • Stripe Billing — Subscription management, free trials, and usage-based pricing
  • Embed Mode — Embed agents in any website via iframe with custom styling
  • Custom Domains — Host agents on your own domain
  • API Keys — Programmatic access for integrations and automation
  • Whitelabeling — Custom branding, logos, and disclaimers

Available On

Platform Status
Web Production at os.ibl.ai — works on any modern browser
macOS Native desktop app — lightweight, fast, system-integrated
iOS Native mobile app — available on iPhone and iPad
Android Native mobile app — available on phones and tablets
Windows Native desktop app
Linux Native desktop app

One codebase, six platforms. OS runs natively everywhere your users are — lightweight, fast, with near-native performance.


Downloads

Signed & notarized macOS builds, newest first. Each row links to the DMG for that release; rows are added automatically at release time (see scripts/update-readme-downloads.mjs).

Version Date Download
v0.95.1 2026-07-09 macOS (Universal)
v0.95.0 2026-07-09 macOS (Universal)

Screenshots

Agent Configuration

Configure agents with LLMs, prompts, safety filters, and explore conversation starters

Agent Settings

Customize agent identity, description, and appearance

MCP Connectors

Connect to external services via Model Context Protocol — GitHub, Notion, Slack, and more

Memory Settings

Manage agent memory with knowledge gaps, learning goals, and user preferences

Agent Discovery

Control agent visibility, access permissions, and LTI integration


Quick Start

git clone https://github.com/iblai/os.git
cd os
pnpm install

Using Claude Code? Run /setup — it will walk you through connecting your ibl.ai tenant and configuring .env.local automatically.

Manual setup: Copy .env.example to .env.local, then set NEXT_PUBLIC_MAIN_TENANT_KEY to your org key from login.iblai.app/me.

cp .env.example .env.local   # then edit NEXT_PUBLIC_MAIN_TENANT_KEY
pnpm dev

Open http://localhost:3000. See the full Development Guide for environment variables, scripts, and architecture details.


Deployment

OS is the frontend for the ibl.ai platform. Choose your path based on your backend setup:

Option A: Existing ibl.ai Tenant

If you already have an ibl.ai tenant (organization key):

  1. Configure your tenant

    cp .env.example .env.local

    Update these values with your tenant details:

    NEXT_PUBLIC_TENANT=your-tenant
  2. Deploy with Docker (recommended)

    docker build -t os .
    docker run -p 5000:5000 --env-file .env.local os

    Or deploy standalone:

    pnpm build
    PORT=3000 node server-wrapper.js

    The build emits a self-contained server under .next/standalone/ (Next.js standalone output). next.config.ts pins outputFileTracingRoot to the project directory so the output always lands at .next/standalone/server.js with its static assets alongside it. See Troubleshooting if the app loads to a blank screen.

Option B: Enterprise Deployment

If you need full backend infrastructure:

  1. Get an enterprise license

    Reach out at ibl.ai/contact to get a license of the enterprise platform (full backend codebase).

  2. Deploy with our infra CLI

    If you already have access to our Docker images, deploy them easily via iblai/iblai-infra-cli.

Note: OS requires the ibl.ai backend platform for authentication, AI agent APIs, and data services. The backend is not included in this repository — visit ibl.ai to get started.

Desktop & Mobile

See docs/development.md for native app build instructions.

Full deployment docs: Docker & Standalone

Build-Time Configuration

The native (Tauri) app reads two optional build-time flags. Because they're baked in at compile time (Rust's option_env!), you set them as environment variables in the build shell before pnpm exec tauri build — so the same codebase can produce differently-configured builds from the same app URL (e.g. one build locked to tenant A, another to tenant B).

Env var Tauri command Default Effect
IBL_TENANT get_locked_tenantstring "" (unlocked) Tenant lock. When set, the app forces every user onto this tenant — logging out of any other tenant it finds — and hides the tenant switcher. Empty = multi-tenant.
IBL_ALLOW_IN_APP_PURCHASE allow_in_app_purchasebool false Enables in-app purchase UI. Truthy values: 1, true, yes, on (case-insensitive).
# a build locked to the "acme" tenant with in-app purchase enabled
IBL_TENANT=acme IBL_ALLOW_IN_APP_PURCHASE=true pnpm exec tauri build

In CI, set them as env on the build step. src-tauri/build.rs declares cargo:rerun-if-env-changed for both, so cargo recompiles whenever a value changes between builds. Leaving them unset yields a standard, unlocked build.

Troubleshooting

The app loads to a blank page or stays stuck on the loading spinner (no redirect to login).

Open your browser's DevTools → Network tab and reload. If every request under /_next/static/... and /env.js returns 404/503, the server isn't finding its static assets. Two common causes:

  • A duplicate or stale server is bound to the port. An older node/next process from a previous run can keep listening on :3000 and shadow the new one (a process bound to a specific address such as 127.0.0.1 wins over a wildcard bind). Find and stop strays before starting fresh:

    lsof -nP -iTCP:3000 -sTCP:LISTEN   # list listeners on the port
    kill <PID>                         # stop the stale one
  • The standalone output was nested under an unexpected path. Next.js infers the file-tracing root from the nearest lockfile. A stray lockfile in a parent directory (e.g. ~/package-lock.json) makes it treat your home directory as the workspace root and emit the server at .next/standalone/<path-to-project>/server.js instead of .next/standalone/server.jspost-build.sh then copies static assets next to the wrong path and server-wrapper.js can't find the server. This repo pins outputFileTracingRoot in next.config.ts to prevent it; if you still hit nesting, remove the stray parent lockfile and rebuild.


Testing

This project is covered by Playwright end-to-end tests in e2e/. Run the E2E suite for any change so nothing regresses:

make e2e-ui

make e2e-ui launches Playwright in interactive UI mode — watch the journeys run, step through them, and re-run individual tests. The first time, install the browsers once:

make e2e-install

Other useful targets:

Command What it does
make e2e Run the full suite headless (all browsers)
make e2e-headed Run with a visible browser
make e2e-chrome Run on Chrome only
make e2e-journey J=01 Run a single journey spec
make e2e-report Open the last HTML report

See e2e/COVERAGE.md for current coverage. Coverage must not regress — add or update a journey whenever you change user-facing behavior.


Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines. If you'll be working with AI-assisted tooling, read AGENTS.md first — it documents the formatting, lint, and push protocol rules that the husky hooks enforce.


Resources


License

MIT License. See LICENSE for details.

About

Enables organizations to create and deploy customizable AI agents with support for multiple LLM providers, real-time chat, voice, document training, analytics, user management, SSO authentication, and embeddable widgets. Built with React 19, Redux Toolkit, Radix UI, and Tailwind CSS.

Topics

Resources

License

Contributing

Stars

15 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors