{"_id":"@benzsiangco/jarvis","_rev":"5-dee796b153f39388fe9d90dc4713786c","name":"@benzsiangco/jarvis","dist-tags":{"latest":"1.1.26"},"versions":{"1.0.0":{"name":"@benzsiangco/jarvis","version":"1.0.0","keywords":["ai","cli","coding-agent","tui","jarvis"],"license":"MIT","_id":"@benzsiangco/jarvis@1.0.0","maintainers":[{"name":"benz-siangco","email":"jessiebenzs@gmail.com"}],"homepage":"https://github.com/benzsiangco/jarvis#readme","bugs":{"url":"https://github.com/benzsiangco/jarvis/issues"},"bin":{"jarvis":"bin/jarvis.js"},"dist":{"shasum":"d81324267c45ce063e60806c7c82617e147315df","tarball":"https://registry.npmjs.org/@benzsiangco/jarvis/-/jarvis-1.0.0.tgz","fileCount":16,"integrity":"sha512-O3oCPPP96RdzApz96sj4rZUlgGiHkOWR5ajmFOEc2i1s6a0jmMKIHBwQ73QL5a/tjD3o5MQ9IPHFdQ7djETSvQ==","signatures":[{"sig":"MEUCIAGWCfStijopQ83fE54yIBauyOT710lpoFy8L+QqzDzZAiEAzwxMROpgU3bJMhJzEp+SvPX9JQ+jXXkPyWTJTprmcnU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6744304},"type":"module","module":"src/index.ts","engines":{"node":">=20.0.0"},"gitHead":"02e64e9e2a2d28a0e539e237c3c88519d4392703","private":false,"scripts":{"dev":"bun run src/cli.ts","web":"bun run src/cli.ts web","build":"bun build src/cli.ts --outdir dist --target node --minify","start":"bun run dist/cli.js","opentui":"bun run src/cli.ts tui","typecheck":"tsc --noEmit","web:build":"bun run src/web/build-ui.ts","prepublishOnly":"bun run build"},"_npmUser":{"name":"benz-siangco","email":"jessiebenzs@gmail.com"},"repository":{"url":"git+https://github.com/benzsiangco/jarvis.git","type":"git"},"_npmVersion":"10.9.3","description":"AI coding agent with TUI, Web, and Desktop support","directories":{},"_nodeVersion":"22.20.0","dependencies":{"ai":"^4.0.0","ora":"^8.0.0","zod":"^3.23.0","clsx":"^2.1.1","conf":"^13.0.0","glob":"^11.0.0","hono":"^4.11.4","open":"^11.0.0","chalk":"^5.3.0","react":"19","xterm":"^5.3.0","marked":"^15.0.0","figures":"^6.0.0","commander":"^12.1.0","react-dom":"19","remark-gfm":"^4.0.1","lucide-react":"^0.562.0","@opentui/core":"^0.1.74","@ai-sdk/google":"^1.0.0","@ai-sdk/openai":"^1.0.0","@opentui/react":"^0.1.74","react-markdown":"^10.1.0","tailwind-merge":"^3.4.0","marked-terminal":"^7.2.0","xterm-addon-fit":"^0.8.0","@types/react-dom":"19","@ai-sdk/anthropic":"^1.0.0","@inquirer/prompts":"^8.2.0","react-resizable-panels":"^4.4.1","react-syntax-highlighter":"^16.1.0","opencode-antigravity-auth":"^1.3.0","@types/react-syntax-highlighter":"^15.5.13"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","@types/node":"^22.10.0","@types/react":"19","@types/marked-terminal":"^6.1.1"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/jarvis_1.0.0_1768747638672_0.08572522693353513","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@benzsiangco/jarvis","version":"1.0.2","keywords":["ai","cli","coding-agent","tui","jarvis"],"license":"MIT","_id":"@benzsiangco/jarvis@1.0.2","maintainers":[{"name":"benz-siangco","email":"jessiebenzs@gmail.com"}],"homepage":"https://github.com/benzsiangco/jarvis#readme","bugs":{"url":"https://github.com/benzsiangco/jarvis/issues"},"bin":{"jarvis":"bin/jarvis"},"dist":{"shasum":"d06ec63f534849c9c54cf60b993a8b2fb29b2d1c","tarball":"https://registry.npmjs.org/@benzsiangco/jarvis/-/jarvis-1.0.2.tgz","fileCount":16,"integrity":"sha512-vAZmTL1iigBGyVzDEt5TX6ivI2GVfa9F2Ix6MNoDK5IBZ324U5KujR59y2euQWWMJ3/pkKSehtn/Q5DZ96gErw==","signatures":[{"sig":"MEUCIQCVtuUzUDFMx2Lhmswhfo+Lev45Nb4k8vsDoPPUuNoa4QIgaSdA9vtz6q1Wvg10IlsznVHFFScB4dAHhLySfuaw0zo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6870485},"type":"module","module":"src/index.ts","engines":{"node":">=20.0.0"},"gitHead":"79a876356635cb753baf396ed63550e7f3805669","private":false,"scripts":{"dev":"bun run src/cli.ts","web":"bun run src/cli.ts web","build":"bun build src/cli.ts --outdir dist --target bun --minify","start":"bun run dist/cli.js","opentui":"bun run src/cli.ts tui","typecheck":"tsc --noEmit","web:build":"bun run src/web/build-ui.ts","prepublishOnly":"bun run build"},"_npmUser":{"name":"benz-siangco","email":"jessiebenzs@gmail.com"},"repository":{"url":"git+https://github.com/benzsiangco/jarvis.git","type":"git"},"_npmVersion":"10.9.3","description":"AI coding agent with TUI, Web, and Desktop support","directories":{},"_nodeVersion":"22.20.0","dependencies":{"ai":"^4.0.0","ora":"^8.0.0","zod":"^3.23.0","clsx":"^2.1.1","conf":"^13.0.0","glob":"^11.0.0","hono":"^4.11.4","open":"^11.0.0","chalk":"^5.3.0","react":"19","xterm":"^5.3.0","marked":"^15.0.0","figures":"^6.0.0","commander":"^12.1.0","react-dom":"19","remark-gfm":"^4.0.1","lucide-react":"^0.562.0","@opentui/core":"^0.1.74","@ai-sdk/google":"^1.0.0","@ai-sdk/openai":"^1.0.0","@opentui/react":"^0.1.74","react-markdown":"^10.1.0","tailwind-merge":"^3.4.0","marked-terminal":"^7.2.0","xterm-addon-fit":"^0.8.0","@types/react-dom":"19","@ai-sdk/anthropic":"^1.0.0","@inquirer/prompts":"^8.2.0","react-resizable-panels":"^4.4.1","react-syntax-highlighter":"^16.1.0","opencode-antigravity-auth":"^1.3.0","@types/react-syntax-highlighter":"^15.5.13"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","@types/node":"^22.10.0","@types/react":"19","@types/marked-terminal":"^6.1.1"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/jarvis_1.0.2_1768749260992_0.7254545925752001","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@benzsiangco/jarvis","version":"1.1.0","keywords":["ai","cli","coding-agent","tui","jarvis"],"license":"MIT","_id":"@benzsiangco/jarvis@1.1.0","maintainers":[{"name":"benz-siangco","email":"jessiebenzs@gmail.com"}],"homepage":"https://github.com/benzsiangco/jarvis#readme","bugs":{"url":"https://github.com/benzsiangco/jarvis/issues"},"bin":{"jarvis":"bin/jarvis"},"dist":{"shasum":"f2aac943cd1cd2d841ec2e7aaa1efeeb1f8e6450","tarball":"https://registry.npmjs.org/@benzsiangco/jarvis/-/jarvis-1.1.0.tgz","fileCount":67,"integrity":"sha512-kUiSKtuQvT95sPjZJxIxBVYgx5FsYDTGPayncI/Vkpvyd0WFWciRqKlbTjW3E7aijHiBRYFyvNDyE0FoSyZl6A==","signatures":[{"sig":"MEQCIHa803rprFvtlgp0s2Neb2TOg7N2gLPMjKcExAWL4/zMAiAFboyfBtvmyOtjV6NI9F8RKzZun3GX+hdl6hOWhwli1w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10065503},"main":"dist/electron/main.js","type":"module","module":"src/index.ts","engines":{"node":">=20.0.0"},"gitHead":"ee4fff541a8a95233954e7a080430964eb8d2389","private":false,"scripts":{"dev":"bun run src/cli.ts","web":"bun run src/cli.ts web","build":"bun build src/cli.ts --outdir dist --target bun --minify","start":"bun run dist/cli.js","opentui":"bun run src/cli.ts tui","typecheck":"tsc --noEmit","web:build":"bun run src/web/build-ui.ts","electron:dev":"concurrently \"bun run web\" \"electron dist/electron/main.js\"","electron:build":"bun run web:build && bun run electron:compile && electron-builder","electron:start":"electron dist/electron/main.js","prepublishOnly":"bun run build","electron:compile":"tsc src/electron/main.ts src/electron/preload.ts --outDir dist/electron --target es2020 --module esnext --moduleResolution bundler --esModuleInterop --skipLibCheck"},"_npmUser":{"name":"benz-siangco","email":"jessiebenzs@gmail.com"},"repository":{"url":"git+https://github.com/benzsiangco/jarvis.git","type":"git"},"_npmVersion":"10.9.3","description":"AI coding agent with TUI, Web, and Desktop support - Now with Brain system, OAuth config, and enhanced Skills","directories":{},"_nodeVersion":"22.20.0","dependencies":{"ai":"^4.0.0","ora":"^8.0.0","zod":"^3.23.0","clsx":"^2.1.1","conf":"^13.0.0","glob":"^11.0.0","hono":"^4.11.4","open":"^11.0.0","chalk":"^5.3.0","react":"19","xterm":"^5.3.0","marked":"^15.0.0","figures":"^6.0.0","zustand":"^5.0.10","node-pty":"^1.1.0","commander":"^12.1.0","react-dom":"19","remark-gfm":"^4.0.1","lucide-react":"^0.562.0","@opentui/core":"^0.1.74","framer-motion":"^12.27.0","@ai-sdk/google":"^1.0.0","@ai-sdk/openai":"^1.0.0","@opentui/react":"^0.1.74","react-markdown":"^10.1.0","tailwind-merge":"^3.4.0","marked-terminal":"^7.2.0","xterm-addon-fit":"^0.8.0","@types/react-dom":"19","@ai-sdk/anthropic":"^1.0.0","@inquirer/prompts":"^8.2.0","react-resizable-panels":"^4.4.1","react-syntax-highlighter":"^16.1.0","opencode-antigravity-auth":"^1.3.0","@types/react-syntax-highlighter":"^15.5.13"},"_hasShrinkwrap":false,"devDependencies":{"electron":"^40.0.0","@types/bun":"latest","@types/node":"^22.10.0","@types/react":"19","concurrently":"^9.2.1","electron-builder":"^26.4.0","@types/marked-terminal":"^6.1.1"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/jarvis_1.1.0_1768874779727_0.038241639382622816","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@benzsiangco/jarvis","version":"1.1.1","keywords":["ai","cli","coding-agent","tui","jarvis"],"license":"MIT","_id":"@benzsiangco/jarvis@1.1.1","maintainers":[{"name":"benz-siangco","email":"jessiebenzs@gmail.com"}],"homepage":"https://github.com/benzsiangco/jarvis#readme","bugs":{"url":"https://github.com/benzsiangco/jarvis/issues"},"bin":{"jarvis":"bin/jarvis"},"dist":{"shasum":"6daa7c7c3d5e35d09cd6d85b6d0ec038d3d69d64","tarball":"https://registry.npmjs.org/@benzsiangco/jarvis/-/jarvis-1.1.1.tgz","fileCount":67,"integrity":"sha512-ipYxW7agZkGxNul/ThUfROfGlG7S3R5X7UYBYvxKnBHVcheba/zpmGWQ7hAOwjqYinSPm7JzlURp+7JqYcJ67g==","signatures":[{"sig":"MEUCIGiX3S48W7P/FQaKSe23zcwTsGw71HQr6sfcwCVf/wkmAiEAqwK2lopY/KD6q4pL3WE5GoWh0UlQul4DiQW+kioxidw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10068886},"main":"dist/electron/main.js","type":"module","module":"src/index.ts","engines":{"node":">=20.0.0"},"gitHead":"73da31813b2871ee089eff5af63db9274260eb49","private":false,"scripts":{"dev":"bun run src/cli.ts","web":"bun run src/cli.ts web","build":"bun build src/cli.ts --outdir dist --target bun --minify","start":"bun run dist/cli.js","opentui":"bun run src/cli.ts tui","typecheck":"tsc --noEmit","web:build":"bun run src/web/build-ui.ts","electron:dev":"concurrently \"bun run web\" \"electron dist/electron/main.js\"","electron:build":"bun run web:build && bun run electron:compile && electron-builder","electron:start":"electron dist/electron/main.js","prepublishOnly":"bun run build","electron:compile":"tsc src/electron/main.ts src/electron/preload.ts --outDir dist/electron --target es2020 --module esnext --moduleResolution bundler --esModuleInterop --skipLibCheck"},"_npmUser":{"name":"benz-siangco","email":"jessiebenzs@gmail.com"},"repository":{"url":"git+https://github.com/benzsiangco/jarvis.git","type":"git"},"_npmVersion":"10.9.3","description":"AI coding agent with TUI, Web, and Desktop support - Now with Brain system, OAuth config, and enhanced Skills","directories":{},"_nodeVersion":"22.20.0","dependencies":{"ai":"^4.0.0","ora":"^8.0.0","zod":"^3.23.0","clsx":"^2.1.1","conf":"^13.0.0","glob":"^11.0.0","hono":"^4.11.4","open":"^11.0.0","chalk":"^5.3.0","react":"19","xterm":"^5.3.0","marked":"^15.0.0","figures":"^6.0.0","zustand":"^5.0.10","node-pty":"^1.1.0","commander":"^12.1.0","react-dom":"19","remark-gfm":"^4.0.1","lucide-react":"^0.562.0","@opentui/core":"^0.1.74","framer-motion":"^12.27.0","@ai-sdk/google":"^1.0.0","@ai-sdk/openai":"^1.0.0","@opentui/react":"^0.1.74","react-markdown":"^10.1.0","tailwind-merge":"^3.4.0","marked-terminal":"^7.2.0","xterm-addon-fit":"^0.8.0","@types/react-dom":"19","@ai-sdk/anthropic":"^1.0.0","@inquirer/prompts":"^8.2.0","react-resizable-panels":"^4.4.1","react-syntax-highlighter":"^16.1.0","opencode-antigravity-auth":"^1.3.0","@types/react-syntax-highlighter":"^15.5.13"},"_hasShrinkwrap":false,"devDependencies":{"electron":"^40.0.0","@types/bun":"latest","@types/node":"^22.10.0","@types/react":"19","concurrently":"^9.2.1","electron-builder":"^26.4.0","@types/marked-terminal":"^6.1.1"},"peerDependencies":{"typescript":"^5"},"optionalDependencies":{"electron":"^40.0.0"},"peerDependenciesMeta":{"electron":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/jarvis_1.1.1_1768875801002_0.5908733364945309","host":"s3://npm-registry-packages-npm-production"}},"1.1.26":{"name":"@benzsiangco/jarvis","version":"1.1.26","description":"AI coding agent with TUI, Web, and Desktop support - Now with Brain system, OAuth config, and enhanced Skills","module":"src/index.ts","type":"module","private":false,"bin":{"jarvis":"bin/jarvis"},"scripts":{"dev":"bun run src/cli.ts","build":"bun build src/cli.ts --outdir dist --target bun --minify && bun run web:build","prepublishOnly":"bun run build","start":"bun run dist/cli.js","typecheck":"tsc --noEmit","opentui":"bun run src/cli.ts tui","web":"bun run src/cli.ts web","web:build":"bun run src/web/build-ui.ts","electron:compile":"tsc src/electron/main.ts src/electron/preload.ts --outDir dist/electron --target es2020 --module esnext --moduleResolution bundler --esModuleInterop --skipLibCheck","electron:dev":"concurrently \"bun run web\" \"electron dist/electron/main.js\"","electron:build":"bun run web:build && bun run electron:compile && electron-builder","electron:start":"electron dist/electron/main.js","test":"bun test","test:unit":"bun test tests/unit","test:integration":"bun test tests/integration","test:e2e":"bun test tests/e2e","test:watch":"bun test --watch","test:coverage":"bun test --coverage","size":"bun run scripts/check-size.ts","size:check":"bun run build && bun run web:build && bun run size","benchmark":"bun run scripts/benchmark.ts","brain:switch":"bun run scripts/switch-brain.ts"},"main":"dist/electron/main.js","devDependencies":{"@types/bun":"latest","@types/marked-terminal":"^6.1.1","@types/node":"^22.10.0","@types/react":"19","concurrently":"^9.2.1","electron":"^40.0.0","electron-builder":"^26.4.0"},"peerDependencies":{"typescript":"^5"},"peerDependenciesMeta":{"electron":{"optional":true}},"optionalDependencies":{"electron":"^40.0.0"},"dependencies":{"@ai-sdk/anthropic":"^1.0.0","@ai-sdk/google":"^1.0.0","@ai-sdk/openai":"^1.0.0","@inquirer/prompts":"^8.2.0","@opentui/core":"^0.1.74","@opentui/react":"^0.1.74","@types/react-dom":"19","@types/react-syntax-highlighter":"^15.5.13","ai":"^4.0.0","chalk":"^5.3.0","clsx":"^2.1.1","commander":"^12.1.0","conf":"^13.0.0","figures":"^6.0.0","framer-motion":"^12.27.0","glob":"^11.0.0","hono":"^4.11.4","lucide-react":"^0.562.0","marked":"^15.0.0","marked-terminal":"^7.2.0","node-pty":"^1.1.0","open":"^11.0.0","opencode-antigravity-auth":"^1.3.0","ora":"^8.0.0","react":"19","react-dom":"19","react-markdown":"^10.1.0","react-resizable-panels":"^4.4.1","react-syntax-highlighter":"^16.1.0","remark-gfm":"^4.0.1","tailwind-merge":"^3.4.0","xterm":"^5.3.0","xterm-addon-fit":"^0.8.0","zod":"^3.23.0","zustand":"^5.0.10"},"sideEffects":false,"engines":{"node":">=20.0.0"},"keywords":["ai","cli","coding-agent","tui","jarvis"],"repository":{"type":"git","url":"git+https://github.com/benzsiangco/jarvis.git"},"bugs":{"url":"https://github.com/benzsiangco/jarvis/issues"},"homepage":"https://github.com/benzsiangco/jarvis#readme","license":"MIT","_id":"@benzsiangco/jarvis@1.1.26","gitHead":"e875bcf2f58eee86c99ce96d2beb8fe6870b1824","_nodeVersion":"22.20.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-8nEjs2O9mTuQZdq5dQgU3MGGqJoaC6tdzVD899whTJK8E07VsPp+pdBgwxqzXwXiUceNPBhPljuQIpsv5LFoTg==","shasum":"3657f5223bd52c7a2b53d6474030f5592125b406","tarball":"https://registry.npmjs.org/@benzsiangco/jarvis/-/jarvis-1.1.26.tgz","fileCount":76,"unpackedSize":12874268,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCadpJMo4Izl9c1EL2hbQ3WT7NhUFX4oAocrY7iV6fJ+wIgYeG0TFVZJlRoBKPNVXuNwQR48ex6P8uFL2eBQbEYzAQ="}]},"_npmUser":{"name":"benz-siangco","email":"jessiebenzs@gmail.com"},"directories":{},"maintainers":[{"name":"benz-siangco","email":"jessiebenzs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/jarvis_1.1.26_1768929731289_0.13244684534143203"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-18T14:47:18.567Z","modified":"2026-01-20T17:22:11.717Z","1.0.0":"2026-01-18T14:47:18.866Z","1.0.2":"2026-01-18T15:14:21.200Z","1.1.0":"2026-01-20T02:06:19.943Z","1.1.1":"2026-01-20T02:23:21.205Z","1.1.26":"2026-01-20T17:22:11.566Z"},"bugs":{"url":"https://github.com/benzsiangco/jarvis/issues"},"license":"MIT","homepage":"https://github.com/benzsiangco/jarvis#readme","keywords":["ai","cli","coding-agent","tui","jarvis"],"repository":{"type":"git","url":"git+https://github.com/benzsiangco/jarvis.git"},"description":"AI coding agent with TUI, Web, and Desktop support - Now with Brain system, OAuth config, and enhanced Skills","maintainers":[{"name":"benz-siangco","email":"jessiebenzs@gmail.com"}],"readme":"# JARVIS - AI Coding Assistant\n\n[![npm version](https://img.shields.io/npm/v/@benzsiangco/jarvis.svg)](https://www.npmjs.com/package/@benzsiangco/jarvis)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n**Just A Rather Very Intelligent System** - An advanced AI coding agent with Terminal UI, Web UI, and Desktop support.\n\n> **Latest:** v1.1.1 - Now with Brain system, OAuth configuration, enhanced skills, and Electron desktop support!\n\n## ✨ Features\n\n- 🧠 **Brain System** - Customize JARVIS's core identity and personality\n- 🔐 **OAuth Configuration** - Deploy in containers with Cloudflare Tunnel support\n- 📚 **Enhanced Skills** - 10+ skill categories (DevOps, Security, Development, etc.)\n- 🖥️ **Three Modes** - Terminal UI, Web UI, or Desktop app\n- 🤖 **Multi-Provider** - OpenAI, Anthropic, Google AI, and more\n- 🔧 **12 Built-in Tools** - bash, read, write, edit, grep, and more\n- 🎨 **Beautiful UI** - Modern, responsive design with dark theme\n\n## 🚀 Quick Start\n\n### Installation\n\n**Full Install (with Desktop app):**\n```bash\nnpm install -g @benzsiangco/jarvis electron\n```\n\n**CLI Only (smaller install):**\n```bash\nnpm install -g @benzsiangco/jarvis\n```\n\n### Launch JARVIS\n\n**Terminal UI:**\n```bash\njarvis\n# or\njarvis tui\n```\n\n**Web UI:**\n```bash\njarvis web\n# Opens at http://localhost:5533\n```\n\n**Desktop App:**\n```bash\njarvis electron\n# Requires: npm install -g electron\n```\n\n## 📖 Usage Guide\n\n### Terminal UI (TUI)\n\nLaunch the interactive terminal interface:\n\n```bash\njarvis tui\n```\n\n**Key Bindings:**\n- `Ctrl+P` - Open Commands Menu\n- `Ctrl+T` - Switch Model Variants\n- `Ctrl+L` - Clear Chat\n- `Ctrl+N` - New Session\n- `Ctrl+C` - Exit\n- `Up/Down` - Cycle Prompt History\n\n**Slash Commands:**\n- `/skills` - Manage skills\n- `/auth` - Connect AI providers\n- `/help` - Show all commands\n\n### Web UI\n\nStart the web interface:\n\n```bash\njarvis web --port 5533\n```\n\n**Access at:** http://localhost:5533\n\n**Features:**\n- Modern chat interface\n- Integrated terminal\n- Settings panel\n- Session management\n- Model selector\n- File operations\n\n### Desktop App\n\nLaunch the Electron desktop app:\n\n```bash\njarvis electron\n```\n\n**Requirements:**\n- Electron installed (`npm install -g electron`)\n\n**Features:**\n- Native window controls\n- System tray integration\n- All web UI features\n\n## 🧠 Brain System\n\nCustomize JARVIS's core identity and behavior:\n\n### Via Web UI (Recommended)\n1. Open `jarvis web`\n2. Click Settings (⚙️)\n3. Go to **Brain** tab\n4. Edit JARVIS.md\n5. Click **Commit** to save\n\n### Via File\nEdit `JARVIS.md` in your project directory:\n\n```markdown\n# JARVIS - Just A Rather Very Intelligent System\n\nYou are JARVIS, an advanced AI coding assistant...\n\n## Core Principles\n- Be precise and thorough\n- Explain your reasoning\n- Prioritize security\n```\n\nChanges apply to all new conversations.\n\n## 📚 Skills System\n\nJARVIS includes 10+ skill categories:\n\n- **DevOps & Infrastructure** - Linux, Docker, Proxmox\n- **Security & Hacking** - Penetration testing, network security\n- **Software Development** - TypeScript, React, APIs\n- **Automation & Scripting** - SSH, CI/CD pipelines\n- **Database Management** - PostgreSQL, Redis\n- **Monitoring & Observability** - Logging, metrics\n\n### Customize Skills\n\n1. Open Settings → Intelligence tab\n2. Edit `skills.md`\n3. Add your own skills using markdown:\n\n```markdown\n### Your Skill Name\n- Skill description\n- Key capabilities\n- Best practices\n```\n\n## 🔐 OAuth Configuration\n\nPerfect for container deployments with Cloudflare Tunnel:\n\n### Setup Custom OAuth Callback\n\n1. **Configure in JARVIS:**\n   - Settings → Accounts → OAuth Callback Configuration\n   - Enter: `https://jarvis.yourdomain.com/oauth-callback`\n   - Save\n\n2. **Configure Cloudflare Tunnel:**\n```yaml\n# ~/.cloudflared/config.yml\ningress:\n  - hostname: jarvis.yourdomain.com\n    service: http://localhost:5533\n  \n  - hostname: jarvis.yourdomain.com\n    path: /oauth-callback\n    service: http://localhost:51121\n```\n\n3. **Test OAuth:**\n   - Settings → Accounts → Link Google\n   - Should redirect to your custom domain\n\n### Environment Variable\n```bash\nexport JARVIS_OAUTH_CALLBACK_URL=\"https://jarvis.yourdomain.com/oauth-callback\"\njarvis web\n```\n\n## 🐳 Container Deployment\n\n### Docker\n\n```dockerfile\nFROM oven/bun:1\n\nWORKDIR /app\n\n# Install JARVIS\nRUN npm install -g @benzsiangco/jarvis\n\n# Expose ports\nEXPOSE 5533 51121\n\n# Start web UI\nCMD [\"jarvis\", \"web\"]\n```\n\nRun:\n```bash\ndocker build -t jarvis .\ndocker run -p 5533:5533 -p 51121:51121 \\\n  -e JARVIS_OAUTH_CALLBACK_URL=\"https://jarvis.yourdomain.com/oauth-callback\" \\\n  jarvis\n```\n\n### Docker Compose\n\n```yaml\nversion: '3.8'\nservices:\n  jarvis:\n    image: oven/bun:1\n    ports:\n      - \"5533:5533\"\n      - \"51121:51121\"\n    environment:\n      - JARVIS_OAUTH_CALLBACK_URL=https://jarvis.yourdomain.com/oauth-callback\n    command: >\n      sh -c \"npm install -g @benzsiangco/jarvis && jarvis web\"\n```\n\n## 🛠️ CLI Commands\n\n```bash\n# Terminal UI (default)\njarvis\njarvis tui\n\n# Web UI\njarvis web [--port 5533]\n\n# Desktop app\njarvis electron\n\n# Single prompt\njarvis run \"your question here\"\n\n# Account management\njarvis auth\n\n# List providers\njarvis providers\n\n# List models\njarvis models\n\n# Configuration\njarvis config [--show] [--path]\n\n# Sessions\njarvis sessions [--list] [--clear]\n\n# Initialize project\njarvis init\n```\n\n## ⚙️ Configuration\n\n### Global Config Location\n\n- **Linux/macOS:** `~/.config/jarvis/config.json`\n- **Windows:** `%APPDATA%\\jarvis\\config.json`\n\n### View Config\n```bash\njarvis config --show\n```\n\n### Edit Config\nVia Web UI: Settings → Config tab\n\nOr edit directly:\n```json\n{\n  \"model\": \"gpt-4o\",\n  \"persona\": \"hacker\",\n  \"oauth\": {\n    \"callbackUrl\": \"https://jarvis.yourdomain.com/oauth-callback\"\n  }\n}\n```\n\n## 🤖 Supported AI Providers\n\n- **OpenAI** - GPT-4, GPT-4 Turbo, GPT-3.5\n- **Anthropic** - Claude 3.5 Sonnet, Claude 3 Opus\n- **Google** - Gemini 1.5 Pro, Gemini 1.5 Flash\n- **Local** - Ollama, LM Studio\n\n### Connect Provider\n\n**Via Web UI:**\n1. Settings → Accounts\n2. Click \"Setup Key\" or \"Link Google\"\n3. Enter API key or authenticate\n\n**Via CLI:**\n```bash\njarvis auth\n```\n\n## 🔧 Built-in Tools\n\nJARVIS has 12 powerful tools:\n\n- `bash` - Execute shell commands\n- `read` - Read file contents\n- `write` - Create/overwrite files\n- `edit` - Edit existing files\n- `glob` - Find files by pattern\n- `grep` - Search file contents\n- `list` - List directory contents\n- `webfetch` - Fetch web content\n- `task` - Spawn sub-agents\n- `question` - Ask user questions\n- `todoread` - Read todo list\n- `todowrite` - Manage todos\n\nView in: Settings → Tools tab\n\n## 📦 Package Details\n\n**Size:**\n- CLI Only: 3.5 MB\n- With Electron: ~200 MB\n\n**What's Included:**\n- Complete source code\n- Web UI (built)\n- Electron app (compiled)\n- CLI bundle\n- Enhanced skills\n- Documentation\n\n## 🧪 Development\n\n### Prerequisites\n- [Bun](https://bun.sh) runtime\n- Node.js 20+\n- TypeScript 5+\n\n### Install Dependencies\n```bash\ngit clone https://github.com/benzsiangco/jarvis.git\ncd jarvis\nbun install\n```\n\n### Development Mode\n```bash\nbun run dev          # TUI\nbun run web          # Web UI dev server\nbun run electron:dev # Electron dev mode\n```\n\n### Build\n```bash\nbun run build              # CLI bundle\nbun run web:build          # Web UI\nbun run electron:compile   # Electron app\n```\n\n### Run Tests\n```bash\nbun run typecheck\n```\n\n## 📚 Documentation\n\n- [Installation Guide](./INSTALLATION.md) - Detailed installation instructions\n- [Quick Reference](./QUICK_REFERENCE_v1.1.0.md) - Quick start guide\n- [Release Notes](./RELEASE_v1.1.0.md) - Version history\n- [Changelog](./CHANGELOG.md) - All changes\n\n## 🆘 Troubleshooting\n\n### Electron not found\n```bash\nnpm install -g electron\njarvis electron\n```\n\n### OAuth callback not working\n- Ensure server binds to `0.0.0.0` (automatic in v1.1.0+)\n- Check Cloudflare Tunnel routes `/oauth-callback` to port 51121\n- Verify firewall allows port 51121\n\n### Brain/Skills not applying\n- Click \"Commit\" to save changes in Settings\n- Start new conversation to see changes\n- Check console for errors\n\n### Web UI won't start\n```bash\n# Check if Bun is installed\nbun --version\n\n# Install Bun if needed\ncurl -fsSL https://bun.sh/install | bash\n```\n\n## 🌟 What's New\n\n### v1.1.1 (Latest)\n- ✅ `jarvis electron` command\n- ✅ Electron as optional dependency\n- ✅ Installation guide\n- ✅ Better error messages\n\n### v1.1.0\n- ✅ Brain System (JARVIS.md editor)\n- ✅ OAuth Callback Configuration\n- ✅ Enhanced Skills (10+ categories)\n- ✅ Tools Tab in Settings\n\n### v1.0.x\n- ✅ Initial release\n- ✅ TUI, Web, Desktop modes\n- ✅ Multi-provider support\n\n## 🤝 Contributing\n\nContributions welcome! Please:\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Submit a pull request\n\n## 📄 License\n\nMIT License - see [LICENSE](./LICENSE) file for details\n\n## 🔗 Links\n\n- **NPM Package:** https://www.npmjs.com/package/@benzsiangco/jarvis\n- **GitHub:** https://github.com/benzsiangco/jarvis\n- **Issues:** https://github.com/benzsiangco/jarvis/issues\n- **Releases:** https://github.com/benzsiangco/jarvis/releases\n\n## 💡 Tips\n\n**Customize Brain:**\n```bash\njarvis web\n# Settings → Brain → Edit JARVIS.md\n```\n\n**Add Domain Skills:**\n```bash\n# Settings → Intelligence → Edit skills.md\n```\n\n**Deploy with Custom Domain:**\n```bash\n# Settings → Accounts → OAuth Config\n# Enter: https://jarvis.yourdomain.com/oauth-callback\n```\n\n**Use Desktop App:**\n```bash\nnpm install -g @benzsiangco/jarvis electron\njarvis electron\n```\n\n---\n\n**Made with ❤️ by Benz Siangco**\n\nFor help: `jarvis --help` or visit [Documentation](./INSTALLATION.md)\n","readmeFilename":"README.md"}