🚀 Open-source AI workspace for chat, agents, browser control, code, files, voice, desktop, and mobile.
OmniX is a local-first agent workspace that turns one messy request into visible, inspectable work. It brings together a React web app, an Express agent backend, an Electron desktop shell, an Expo mobile companion, a landing/download page, and reusable packages inside one monorepo.
This repo is built for builders who want to understand, customize, and ship an AI workspace instead of treating the agent as a hidden black box.
- 🧠 Agent runtime you can inspect: routing, prompts, graph nodes, tool calls, permissions, streaming events, and final answers are split into readable modules.
- 🛠️ Real tool execution: terminal sessions, browser control, files, workflows, custom agents, desktop bridge actions, and add-ons live in the same workspace.
- 🖥️ Desktop-ready: Electron wraps the runtime so OmniX can feel like a native local app.
- 📱 Mobile companion: Expo/React Native surfaces chat, pairing, commands, remote control, and notifications.
- 🌐 Landing app included: the public site can present screenshots, releases, and download links.
- 🔒 Open-source safe defaults: local setup works without production credentials, hosted auth, signing keys, or private deployment material.
OmniX/
├── apps/
│ ├── backend/ # Agent graph, tools, workflows, bridge APIs, Express server
│ ├── desktop/ # Electron wrapper and local runtime manager
│ ├── frontend/ # Main React workspace UI
│ ├── landing/ # Public landing/download site
│ ├── mobile/ # Expo / React Native companion app
│ └── voice-agent/ # Voice runtime entrypoint
├── packages/
│ └── supabase/ # Optional Supabase helper package
├── scripts/ # Release, safety, and workspace helper scripts
├── package.json # Root workspace scripts
└── package-lock.json # Locked npm dependency graph
flowchart LR
User["User"] --> Frontend["React Frontend"]
Frontend --> Backend["Express Backend"]
Backend --> Agent["Agent Graph"]
Agent --> Tools["Tools + Workflows"]
Tools --> Browser["Browser"]
Tools --> Terminal["Terminal"]
Tools --> Files["Files"]
Tools --> Addons["Add-ons"]
Backend --> Desktop["Electron Desktop"]
Backend --> Mobile["Expo Mobile"]
Backend --> Voice["Voice Agent"]
Landing["Landing Site"] --> Downloads["Release Links"]
The core loop is simple:
- 💬 A user asks OmniX for an outcome.
- 🧭 The backend builds state, selects a route, and calls the model provider.
- 🛠️ Tools run through controlled modules: terminal, browser, files, custom agents, workflows, and bridges.
- 📡 The backend streams structured progress back to the UI.
- ✅ The frontend renders messages, tool activity, artifacts, plans, sidebars, and verification.
- Node.js 18+
- npm 10+
- Git
Optional:
- Xcode and CocoaPods for iOS builds
- Android Studio / Android SDK for Android builds
- Docker for containerized workflows
git clone https://github.com/HardikCoder45/OmniX.git
cd OmniX
npm install
cp .env.example .envAdd your local provider keys to .env when you are ready:
OMNI_PROVIDER_API_KEY=
OMNI_PROVIDER_BASE_URL=
OMNI_MAIN_AGENT_MODEL=
OMNI_ROUTER_MODEL=
OPENROUTER_API_KEY=
OPENROUTER_BASE_URL=
SERPER_API_KEY=
npm run devThe root dev command uses Turbo to start workspace dev tasks in parallel.
npm run build # Build workspace packages/apps
npm run lint # Run available lint tasks
npm run check-types # Run available type checks
npm run agent:tool-safety # Check tool safety rules
npm run open-source:check # Open-source readiness checksDesktop:
npm run desktop:dev
npm run desktop:dist
npm run desktop:dist:mac
npm run desktop:dist:win:x64Landing page:
npm run --workspace apps/landing dev
npm run --workspace apps/landing buildMobile:
npm run --workspace apps/mobile startThe desktop app lives in apps/desktop. It wraps the frontend in Electron, prepares the local runtime, and manages the app shell for desktop users.
Use it when working on:
- Native app packaging
- Runtime startup and service lifecycle
- Desktop permissions and bridge behavior
- Local release builds for macOS and Windows
The mobile app lives in apps/mobile. It is an Expo/React Native companion for staying connected to the same OmniX workspace while away from the desktop.
It includes:
- Pairing and setup flows
- Chat and command panels
- Remote desktop control surfaces
- Tool and workflow sidebars
- Notification helpers
The landing app lives in apps/landing. It presents OmniX, screenshots, app surfaces, release metadata, and download calls to action.
Current download buttons are routed through the shared landing download configuration in:
apps/landing/src/data.js
OmniX should stay safe to publish. Before pushing, check that you are not committing:
- Real
.envfiles or production credentials - API keys, service account files, provider secrets, signing keys, or private URLs
- Apple provisioning profiles, Android keystores, certificates, or release signing assets
- Generated release binaries, build folders, logs, caches, or local machine files
- Private deployment-only configuration
If a secret is exposed, rotate it immediately and remove it from git history before pushing.
- Fork or branch from
main. - Keep changes scoped to the workspace you are touching.
- Run the most relevant checks before committing.
- Keep examples and docs free of real secrets.
- Open a clear PR with what changed, how it was tested, and screenshots for UI work.
Good first areas:
apps/frontend/src/componentsfor the workspace UIapps/backend/agents/corefor routing and graph behaviorapps/backend/agents/toolingfor tool definitionsapps/mobile/srcfor companion app screensapps/landing/srcfor the public site
Release helpers collect desktop and mobile artifacts into landing metadata:
npm run release:desktop:mac
npm run release:desktop:win:x64
npm run release:mobile:apk
npm run release:collect
npm run release:verifyGenerated binaries should not be committed unless a release process explicitly requires it.
OmniX is released under the MIT License.
Built with curiosity, local-first thinking, and a bias toward making AI work visible. ✨