{ "name": "omniroute", "version": "1.1.0", "description": "Smart AI Router with auto fallback — route to FREE & cheap models, zero downtime. Works with Cursor, Cline, Claude Desktop, Codex, and any OpenAI-compatible tool.", "type": "module", "bin": { "omniroute": "bin/omniroute.mjs", "omniroute-reset-password": "bin/reset-password.mjs" }, "files": [ "bin/", "app/", "README.md", "LICENSE" ], "workspaces": [ "open-sse" ], "engines": { "node": ">=18.0.0" }, "keywords": [ "ai", "router", "proxy", "openai", "claude", "anthropic", "gemini", "fallback", "cursor", "cline", "codex", "llm", "auto-fallback" ], "license": "MIT", "author": "diegosouzapw", "repository": { "type": "git", "url": "https://github.com/diegosouzapw/OmniRoute" }, "homepage": "https://omniroute.online", "scripts": { "dev": "next dev --webpack --port 20128", "build": "next build --webpack", "build:cli": "node scripts/prepublish.mjs", "start": "next start --port 20128", "lint": "eslint .", "test": "node --test tests/unit/*.test.mjs", "test:unit": "node --import tsx/esm --test tests/unit/*.test.mjs", "test:plan3": "node --test tests/unit/plan3-p0.test.mjs", "test:fixes": "node --test tests/unit/fixes-p1.test.mjs", "test:security": "node --test tests/unit/security-fase01.test.mjs", "test:e2e": "npx playwright test", "test:coverage": "npx c8 --exclude=open-sse --check-coverage --lines 50 --functions 50 --branches 50 node --import tsx/esm --test tests/unit/*.test.mjs", "test:all": "npm run test:unit && npm run test:e2e", "check": "npm run lint && npm run test", "prepublishOnly": "npm run build:cli", "prepare": "husky" }, "dependencies": { "@monaco-editor/react": "^4.7.0", "bcryptjs": "^3.0.3", "better-sqlite3": "^12.6.2", "bottleneck": "^2.19.5", "express": "^5.2.1", "fetch-socks": "^1.3.2", "http-proxy-middleware": "^3.0.5", "https-proxy-agent": "^7.0.6", "jose": "^6.1.3", "lowdb": "^7.0.1", "monaco-editor": "^0.55.1", "next": "^16.1.6", "node-machine-id": "^1.1.12", "open": "^11.0.0", "ora": "^9.1.0", "pino": "^10.3.1", "pino-pretty": "^13.1.3", "react": "19.2.4", "react-dom": "19.2.4", "recharts": "^3.7.0", "selfsigned": "^5.5.0", "undici": "^7.19.2", "uuid": "^13.0.0", "wreq-js": "^2.0.1", "zod": "^4.3.6", "zustand": "^5.0.10" }, "devDependencies": { "@playwright/test": "^1.58.2", "@tailwindcss/postcss": "^4.1.18", "@types/bcryptjs": "^2.4.6", "@types/better-sqlite3": "^7.6.13", "@types/node": "^25.2.3", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "eslint": "^9.39.2", "eslint-config-next": "16.1.6", "husky": "^9.1.7", "lint-staged": "^16.2.7", "prettier": "^3.8.1", "tailwindcss": "^4", "tsx": "^4.21.0", "typescript": "^5.9.3", "typescript-eslint": "^8.56.0" }, "lint-staged": { "*.{js,jsx,ts,tsx,mjs}": [ "prettier --write", "eslint --fix --no-error-on-unmatched-pattern" ], "*.{json,md,yml,yaml,css}": [ "prettier --write" ] } }