diff --git a/.gitignore b/.gitignore
index 81f72d8..a63a70a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,6 +3,8 @@ node_modules/
# Build output
dist/
+dist-build/
+build/packaged-runtime/
# OS files
.DS_Store
@@ -17,6 +19,9 @@ Thumbs.db
# Logs
*.log
npm-debug.log*
+pnpm*
+.playwright-mcp/*
+.playwright-mcp
# Environment files
.env
diff --git a/CNAME b/CNAME
deleted file mode 100644
index ecdd81a..0000000
--- a/CNAME
+++ /dev/null
@@ -1 +0,0 @@
-proxima.haloai.online
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
index 3c7a8d4..7553d3d 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,26 +1,10 @@
-Proxima Personal Use License
+Copyright (c) 2026 brAInstorm
-Copyright (c) 2026 Proxima
+MIT LICENSE
-This software is licensed for PERSONAL, NON-COMMERCIAL USE ONLY.
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-PERMITTED:
-- Individual users may use, copy, and modify this software for personal use
-- Students and hobbyists may use this for learning and personal projects
-- Contributors may submit improvements via pull requests
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-NOT PERMITTED:
-- Commercial use by businesses, enterprises, or organizations
-- Selling, licensing, or distributing this software for profit
-- Using this software as part of a commercial product or service
-- Enterprise or corporate deployments
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-For commercial licensing inquiries, please contact the author.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/MODULES.md b/MODULES.md
new file mode 100644
index 0000000..fbf9ee2
--- /dev/null
+++ b/MODULES.md
@@ -0,0 +1,9 @@
+MODULE NOTES
+
+This is mainly a page to track notes for future modules we'd like to implement.
+
+Recently added -- Google Advanced AI:
+https://www.google.com/search?sclient=gws-wiz&udm=50&arv=1&aep=1&ntc=1
+(similar to Gemini? it apears to give different code optimizations)
+
+
diff --git a/README.md b/README.md
index b4138d8..7e727ea 100644
--- a/README.md
+++ b/README.md
@@ -1,546 +1,637 @@
-
-# ⚡ Proxima
+
+
+# brAInstorm
### Multi-AI Gateway — One API, All Models
-[](https://github.com/Zen4-bit/Proxima/releases)
+[](https://github.com/mindflowgo/brAInstorm/releases)
[](LICENSE)
-[]()
-[]()
-[]()
+[]()
+[]()
+[]()
-Use ChatGPT, Claude, Gemini & Perplexity through **ONE single endpoint**.
-No API keys needed — use your existing accounts.
+## Introduction
-[Getting Started](#getting-started) · [API Usage](#api-usage) · [SDKs](#sdks) · [MCP Tools](#mcp-tools) · [Configuration](#configuration)
+For those people that went between pasting their code into their favorite AI engines because they liked
+the responses and wished their Antigravity or CLI tools would be able to simulate that, we built this.
----
+brAInstorm creates cocooned webservers for each of your AI tools, that then provides MCP services that
+your Antigravity, Codex, or other CLI tools can interface with.
-## Demo
+We also provide a customizable skills section where you can build out skills to brief the AI's on.
-https://github.com/user-attachments/assets/6eb76618-2c1d-4dad-b753-aaaee9e93310
+Now you can pull in the power of:
----
+- ChatGPT, Claude, Gemini, Google AI, Perplexity, DeepSeek, Grok, Z.AI, Copilot, Meta AI, and Qwen
-
+to work on your projects - SAVE tokens as these don't need API keys and are freely available to you.
-
+[Getting Started](#getting-started) · [API Usage](#api-usage) · [Skills](#skills) · [SDKs](#sdks) · [MCP](#mcp) · [Troubleshooting](#troubleshooting)
-
-## Overview
+
-Proxima is a local AI gateway that connects multiple AI providers to your coding environment.
+
-**One API. One URL. One function. Any model. Any task.**
-```
+## WORK IN PROGRESS
+We modify this and have more work to do. We welcome your help. Fork our GIT, add some improvements for
+the features you need, and then send us a pull request. We grow stronger together and this tool helps
+our AI tokens go further!
+
+I want to give massive credit to the original author that sparked the idea:
+[Zen4-bit](https://github.com/Zen4-bit/Proxima).
+
+It's with a bleeding heart that I forked and re-wrote much of this system (with the help of Codex) because I really needed a bunch of the Chinese AI's and his system was not modular enough to plug them in. I hope that ultimately we can bring a bunch of us to merge all these systems, perhaps starting with our specification documents, so we don't have divergent branches. Working together would be so much better.
+
+For now, this code-base will be built around:
+1. modularity: each AI provider needs to have it's own plugin module
+2. skills separation: skills are simply text files fed to teh AI, so they should be a configurable directory, hot hard-coded into the code and passed off as some magical tool.
+
+The magic is having access to each AI system, and then having usefully crafted skill files to feed to them. Let's keep that in mind and not get confused here.
+
+Ultimately anything beyond an "ask_{ai}" is simply passing some supplementary text to it (a "skill") to do that job. Let's work together to build out those "skills"!
+
+**One API. One URL. One function field. Any enabled model.**
+
+```json
POST /v1/chat/completions
-{"model": "claude", "message": "Hello"} → Chat
-{"model": "perplexity", "message": "AI news", "function": "search"} → Search
-{"model": "gemini", "message": "Hello", "function": "translate", "to": "Hindi"} → Translate
-{"model": "claude", "message": "Sort algo", "function": "code"} → Code
+{"model":"claude","message":"Give me the risky edge cases in this auth flow."}
+{"model":"perplexity","message":"What changed in AI this week?","function":"search"}
+{"model":"claude","function":"security_audit","code":"async function login(req,res){...}"}
+{"model":"claude","function":"code_review","desc":"Please review this Express middleware for bugs:\\n\\nconst allow = req.user?.role === 'admin';"}
```
-> **No API keys required.** Proxima uses your existing browser sessions to talk to AI providers directly.
+> **No API keys required.** brAInstorm uses your existing browser sessions to talk to AI providers directly.
-### Why Proxima?
+## Why brAInstorm?
| Feature | Description |
|---------|-------------|
-| **One Endpoint** | Everything through `/v1/chat/completions` — no separate URLs |
-| **4 AI Providers** | ChatGPT, Claude, Gemini, Perplexity — any model, any task |
-| **45+ MCP Tools** | Search, code, translate, analyze, brainstorm — all via MCP |
+| **One Endpoint** | Everything through `/v1/chat/completions` |
+| **11 AI Providers** | ChatGPT, Claude, Gemini, Google AI, Perplexity, DeepSeek, Grok, Z.AI, Copilot, Meta AI, Qwen |
+| **62+ MCP Tools** | Search, code, translation, file analysis, provider control, dynamic skills |
+| **Dynamic Skills** | Any `skills/.md` file becomes a callable prompt automatically |
| **REST API** | OpenAI-compatible API on `localhost:3210` |
-| **SDKs** | Python & JavaScript — one function each |
-| **No API Keys** | Use your existing account logins |
-| **Local & Private** | Runs on localhost, your data stays on your machine |
-| **Smart Router** | Auto-picks the best available AI for your query |
-
----
-
-## What's New in v3.0.0
+| **SDKs** | Python and JavaScript clients, plus legacy compatibility aliases |
+| **Local and Private** | Runs on localhost, data stays on your machine |
+| **Smart Router** | Auto-picks the best available AI for a request |
-- 🆕 **27 new MCP tools** — content, analysis, file analysis, window control, session management
-- 🆕 **REST API** — OpenAI-compatible endpoint at `localhost:3210`
-- 🆕 **Python & JavaScript SDKs** — one function to do everything
-- 🆕 **Smart Router** — auto-picks best AI with retry logic
-- 🆕 **Math Search** — solve math & science problems step-by-step
-- 🆕 **Image Search** — find images on any topic
-- 🆕 **File Analysis** — upload and analyze local files with any AI
-- 🆕 **Window Controls** — show, hide, toggle, headless mode
-- 🔧 **Enhanced typing detection** — better response capture for all providers
-- 🔧 **Claude code hack** — forces inline code instead of artifacts for reliable capture
+## What’s New in This Build
----
+- Added **Google AI** as a provider with `ask_googleai` and REST model support.
+- Added **dynamic skills** backed by `skills/*.md`.
+- Added **`GET /v1/skills`**, **`list_skills`**, **`run_skill`**, and **`brainstorm://skills`**.
+- Added **Cloudflare / human verification surfacing** so blocked providers tell you to complete the check in the app.
+- Rebranded the app and docs to **brAInstorm** while keeping legacy compatibility where it matters.
## Getting Started
### Requirements
-- **Windows 10/11**
-- **Node.js 18+** → [Download Node.js](https://nodejs.org/)
+- Windows 10/11 or macOS
+- Node.js 18+
### Installation
-
-
-
-
**Download Installer**
-Download the latest release and run the installer.
-
-[Download for Windows →](https://github.com/Zen4-bit/Proxima/releases)
+Download the latest release and run the installer. Windows installers are published. macOS can run from source or be built locally from this repo.
-
-
+[Download for Windows →](https://github.com/mindflowgo/brAInstorm/releases)
**Run from Source**
```bash
-git clone https://github.com/Zen4-bit/Proxima.git
-cd proxima
+git clone https://github.com/mindflowgo/brAInstorm
+cd brAInstorm
npm install
npm start
```
-
-
-
+### Build Commands
-### Quick Setup
+| Command | Output |
+|---------|--------|
+| `npm start` | Run brAInstorm locally |
+| `npm run mcp` | Launch the stdio MCP server directly |
+| `npm run build:win` | Build the Windows app |
+| `npm run build:installer` | Build the Windows NSIS installer |
+| `npm run build:mac` | Build macOS universal `dmg` and `zip` artifacts |
+| `npm run build:mac:dir` | Build an unpacked macOS `.app` directory |
-1. **Open Proxima** and login to your AI providers
-2. **Copy MCP config** from Settings panel
-3. **API is live** at `http://localhost:3210`
+Build commands automatically generate a minimal packaged MCP runtime in `build/packaged-runtime/` so the packaged app can expose `src/mcp-server-v3.js`, `skills/`, and only the Node dependencies that runtime actually needs.
----
+### Quick Setup
+
+1. Open brAInstorm, enable the providers you want, and log in to each one.
+2. Copy the MCP config from the Settings panel.
+3. Connect your MCP client or call the REST API at `http://localhost:3210`.
+4. Add or edit files in `skills/` if you want custom reusable prompts.
## Supported Providers
-
-
-
-
-ChatGPT
-
-OpenAI's GPT-4
-
-
-
-
-Claude
-
-Anthropic's Claude
-
-
-
-
-Gemini
-
-Google's Gemini
-
-
-
-
-Perplexity
-
-Web search & research
-
-
-
-
-
-### Model Aliases
-
-You can use familiar names — they all resolve to the right provider:
-
-| Provider | Aliases |
-|----------|---------|
-| ChatGPT | `chatgpt`, `gpt`, `gpt-4`, `gpt-4o`, `openai` |
-| Claude | `claude`, `anthropic`, `sonnet`, `opus`, `haiku` |
-| Gemini | `gemini`, `google`, `bard`, `gemini-pro` |
-| Perplexity | `perplexity`, `pplx`, `sonar` |
-| Auto | `auto` — picks the best available |
-
----
+| Provider | Model ID | Enabled by Default | Default Action |
+|----------|----------|--------------------|----------------|
+| ChatGPT | `chatgpt` | Yes | `chat` |
+| Claude | `claude` | No | `chat` |
+| Gemini | `gemini` | Yes | `chat` |
+| Google AI | `googleai` | No | `chat` |
+| Perplexity | `perplexity` | Yes | `search` |
+| DeepSeek | `deepseek` | No | `chat` |
+| Grok | `grok` | No | `chat` |
+| Z.AI | `zai` | No | `chat` |
+| Copilot | `copilot` | No | `chat` |
+| Meta AI | `metaai` | No | `chat` |
+| Qwen | `qwen` | No | `chat` |
## API Usage
-### ONE Endpoint — Everything
+### Main Endpoint
-```
+```text
POST http://localhost:3210/v1/chat/completions
Content-Type: application/json
```
-The `"function"` field in the body determines what happens. No function = normal chat.
+No `function` field means normal chat. If `function` matches a built-in mode or a discovered skill file, brAInstorm changes behavior automatically.
-### Functions
+### Common Functions
| Function | Body Fields | What It Does |
-|----------|-------------|-------------|
+|----------|-------------|--------------|
| *(none)* | `model`, `message` | Normal chat |
-| `"search"` | `model`, `message`, `function` | Web search + AI analysis |
-| `"translate"` | `model`, `message`, `function`, `to` | Translate text |
-| `"brainstorm"` | `model`, `message`, `function` | Generate creative ideas |
-| `"code"` | `model`, `message`, `function`, `action` | Code generate/review/debug/explain |
-| `"analyze"` | `model`, `function`, `url` | Analyze URL or content |
+| `search` | `model`, `message`, `function` | Web search plus AI analysis |
+| `translate` | `model`, `message`, `function`, `to` | Translate text |
+| `brainstorm` | `model`, `message`, `function` | Run the `skills/brainstorm.md` prompt |
+| `code` | `model`, `message`, `function`, `action` | Generate, review, debug, or explain code |
+| `analyze` | `model`, `function`, `url` or `message` | Analyze a URL or content |
+| `` | `model`, `function`, skill variables | Run any discovered `skills/.md` prompt |
+
+### System Endpoints
+
+| Method | Endpoint | Description |
+|--------|----------|-------------|
+| `GET` | `/v1/models` | List models and their enabled status |
+| `GET` | `/v1/functions` | Function catalog plus current skill registry |
+| `GET` | `/v1/skills` | List discovered skills, variables, and templates |
+| `GET` | `/v1/stats` | Response time stats |
+| `POST` | `/v1/conversations/new` | Start fresh conversations |
+
+### Response Format
-### Examples (All Same URL)
+Every request returns the same OpenAI-style envelope:
+
+```json
+{
+ "id": "brainstorm-abc123",
+ "model": "claude",
+ "choices": [
+ {
+ "message": {
+ "role": "assistant",
+ "content": "AI response here..."
+ }
+ }
+ ],
+ "brainstorm": {
+ "provider": "claude",
+ "responseTimeMs": 2400
+ },
+ "proxima": {
+ "provider": "claude",
+ "responseTimeMs": 2400
+ }
+}
+```
+
+`brainstorm` is the new metadata key. `proxima` is still included for compatibility with older SDKs and clients.
+
+### API Examples
+
+**Chat**
-**Chat:**
```bash
curl http://localhost:3210/v1/chat/completions \
-H "Content-Type: application/json" \
- -d '{"model": "claude", "message": "What is AI?"}'
+ -d '{"model":"claude","message":"Give me the obvious failure modes in a password reset flow."}'
```
-**Search:**
+**Search**
+
```bash
curl http://localhost:3210/v1/chat/completions \
- -d '{"model": "perplexity", "message": "AI news 2026", "function": "search"}'
+ -H "Content-Type: application/json" \
+ -d '{"model":"perplexity","message":"What happened in AI this week?","function":"search"}'
```
-**Translate:**
+**Dynamic skill: `code_review`**
+
```bash
curl http://localhost:3210/v1/chat/completions \
- -d '{"model": "gemini", "message": "Hello world", "function": "translate", "to": "Hindi"}'
+ -H "Content-Type: application/json" \
+ -d '{"model":"claude","function":"code_review","desc":"Please review this Express auth middleware for bugs and obvious improvements:\n\napp.use(async (req,res,next)=>{ if(req.headers.authorization===process.env.ADMIN_TOKEN){ req.user={role:\"admin\"}; } next(); })"}'
```
-**Code Generate:**
+**Dynamic skill: `security_audit`**
+
```bash
curl http://localhost:3210/v1/chat/completions \
- -d '{"model": "claude", "message": "Sort algorithm", "function": "code", "action": "generate", "language": "Python"}'
+ -H "Content-Type: application/json" \
+ -d '{"model":"claude","function":"security_audit","language":"TypeScript","code":"async function login(req,res){ const user = await db.find(req.body.email); if(user.password === req.body.password){ res.json({token: sign(user.id)}) } }"}'
```
-**Code Review:**
+**List current skills**
+
```bash
-curl http://localhost:3210/v1/chat/completions \
- -d '{"model": "claude", "function": "code", "action": "review", "code": "def add(a,b): return a+b"}'
+curl http://localhost:3210/v1/skills
```
-**Brainstorm:**
-```bash
-curl http://localhost:3210/v1/chat/completions \
- -d '{"model": "auto", "message": "Startup ideas", "function": "brainstorm"}'
+### How Skill Variables Work Over REST
+
+For REST requests, brAInstorm builds skill variables from:
+
+- Top-level JSON body fields other than `model`, `function`, `messages`, and `variables`
+- The optional `variables` object
+- Standard message aliases like `message`, `query`, `prompt`, `content`, or `text`
+
+That means all of these work:
+
+```json
+{"model":"claude","function":"brainstorm","subject":"Ways to onboard new consultants faster"}
```
-**Analyze URL:**
+```json
+{"model":"claude","function":"brainstorm","variables":{"subject":"Ways to onboard new consultants faster"}}
+```
+
+## Skills
+
+### How Discovery Works
+
+Skills are never hardcoded. brAInstorm scans the `skills/` directory and builds the registry from the files it finds.
+
+- `skills/.md` becomes a skill named ``
+- File contents are the full prompt template
+- `${variable}` placeholders are filled from request data
+- The registry is loaded at startup and refreshed on skill reads
+- Startup logs print the discovered skills and their variable names
+- `GET /v1/skills`, `list_skills`, and `brainstorm://skills` expose the live registry
+
+Optional override:
+
+- `BRAINSTORM_SKILLS_DIR=/absolute/path/to/skills`
+- Legacy alias still supported: `PROXIMA_SKILLS_DIR`
+
+### Current Bundled Skills
+
+| Skill | Variables | Purpose |
+|-------|-----------|---------|
+| `brainstorm` | `subject` | Idea generation |
+| `code_review` | `desc` | Code review prompt |
+| `convo_history_summarize` | `conversationHistory` | Full project-context summary |
+| `get_ui_reference` | `description`, `fullCode`, `styleHint` | UI/UX reference and implementation prompt |
+| `github_search` | `langFilter`, `query` | GitHub repo and code discovery |
+| `security_audit` | `fullCode`, `lang` | Security review prompt |
+
+### Add a New Skill
+
+1. Create a new file in `skills/`, for example `skills/new_skill.md`.
+2. Put the full prompt in that file.
+3. Use `${variable}` placeholders anywhere you want runtime substitution.
+4. Call it with `function: "new_skill"` over REST or `run_skill` over MCP.
+
+Example:
+
+```md
+
+Write a calm, practical migration plan for this system:
+
+SYSTEM
+${system_name}
+
+CONSTRAINTS
+${constraints}
+```
+
+Then call it over REST:
+
```bash
curl http://localhost:3210/v1/chat/completions \
- -d '{"model": "perplexity", "function": "analyze", "url": "https://example.com"}'
+ -H "Content-Type: application/json" \
+ -d '{"model":"claude","function":"new_skill","system_name":"legacy billing sync","constraints":"no downtime, no schema freeze longer than 10 minutes"}'
```
-### Response Format
+### MCP Skill Usage
-Every call returns the **same format**:
+**List skills**
```json
{
- "id": "proxima-abc123",
- "model": "claude",
- "choices": [{
- "message": {
- "role": "assistant",
- "content": "AI response here..."
- }
- }],
- "proxima": {
+ "tool": "list_skills",
+ "arguments": {
+ "includeTemplate": true
+ }
+}
+```
+
+**Run a skill**
+
+```json
+{
+ "tool": "run_skill",
+ "arguments": {
+ "skill": "security_audit",
"provider": "claude",
- "responseTimeMs": 2400
+ "variables": {
+ "lang": " (TypeScript)",
+ "fullCode": "async function login(req,res){ const user = await db.find(req.body.email); if(user.password === req.body.password){ res.json({token: sign(user.id)}) } }"
+ }
}
}
```
-### System Endpoints
+`run_skill` also supports `files`. If you pass files, brAInstorm exposes their contents as `filesContent`, `fileContent`, `fullCode`, and `desc` when those variables are not already set.
-| Method | Endpoint | Description |
-|--------|----------|-------------|
-| `GET` | `/v1/models` | List models and their status |
-| `GET` | `/v1/functions` | API function catalog |
-| `GET` | `/v1/stats` | Response time stats |
-| `POST` | `/v1/conversations/new` | Fresh start |
+### Skill Resources
+
+- `brainstorm://skills`
+- `brainstorm://status`
----
+Legacy compatibility is still available:
+
+- `proxima://skills`
+- `proxima://status`
## SDKs
-### Python SDK — One Function
+### Python
+
+Primary entrypoint:
```python
-from proxima import Proxima
-client = Proxima()
-
-# Chat — any model
-response = client.chat("Hello", model="claude")
-response = client.chat("Hello", model="chatgpt")
-response = client.chat("Hello", model="gemini")
-response = client.chat("Hello") # auto picks best
-print(response.text)
-print(response.model)
-print(response.response_time_ms)
-
-# Search — same function, add function="search"
-result = client.chat("AI news 2026", model="perplexity", function="search")
-print(result.text)
-
-# Translate — same function, add function="translate"
-hindi = client.chat("Hello world", model="gemini", function="translate", to="Hindi")
-print(hindi.text)
-
-# Code generate
-code = client.chat("Sort algorithm", model="claude", function="code", action="generate", language="Python")
-
-# Code review
-review = client.chat(function="code", model="claude", action="review", code="def add(a,b): return a+b")
-
-# Brainstorm
-ideas = client.chat("Startup ideas", function="brainstorm")
-
-# Analyze URL
-analysis = client.chat(function="analyze", url="https://example.com")
-
-# System
-models = client.get_models()
-stats = client.get_stats()
-client.new_conversation()
+from brainstorm import Brainstorm
+
+client = Brainstorm()
+
+reply = client.chat(
+ "I need five realistic B2B SaaS ideas for accountants who hate manual month-end work.",
+ model="claude",
+ function="brainstorm",
+)
+print(reply.text)
+
+review = client.chat(
+ model="claude",
+ function="code_review",
+ desc="Please review this login handler for bugs and weak spots:\n\nasync function login(req,res){ const user = await db.find(req.body.email); if(user.password === req.body.password){ res.json({token: sign(user.id)}) } }",
+)
+print(review.text)
+
+skills = client.get_skills()
+print(skills["skills"][0]["name"])
```
-**Installation:** `pip install requests`, then copy `sdk/proxima.py` to your project.
+Installation:
-### JavaScript SDK — One Function
+- `pip install requests`
+- Copy `sdk/brainstorm.py` into your project
-```javascript
-const { Proxima } = require('./sdk/proxima');
-const client = new Proxima();
-
-// Chat — any model
-const res = await client.chat("Hello", { model: "claude" });
-console.log(res.text);
+### JavaScript
-// Search
-const news = await client.chat("AI news", { model: "perplexity", function: "search" });
+Primary entrypoint:
-// Translate
-const hindi = await client.chat("Hello", { model: "gemini", function: "translate", to: "Hindi" });
+```javascript
+const { Brainstorm } = require('./brainstorm');
-// Code generate
-const code = await client.chat("Sort algo", { model: "claude", function: "code", action: "generate" });
+const client = new Brainstorm();
-// Brainstorm
-const ideas = await client.chat("Startup ideas", { function: "brainstorm" });
+const ideas = await client.chat(
+ "Give me seven practical launch ideas for a solo founder selling into local service businesses.",
+ { model: "claude", function: "brainstorm" }
+);
+console.log(ideas.text);
-// Analyze
-const analysis = await client.chat("", { function: "analyze", url: "https://example.com" });
+const review = await client.chat("", {
+ model: "claude",
+ function: "code_review",
+ desc: "Please review this Express middleware for auth bugs:\\n\\napp.use(async (req,res,next)=>{ if(req.headers.authorization===process.env.ADMIN_TOKEN){ req.user={role:'admin'}; } next(); })"
+});
+console.log(review.text);
-// System
-const models = await client.getModels();
-const stats = await client.getStats();
+const skills = await client.getSkills();
+console.log(skills.skills.map((skill) => skill.name));
```
-Works with Node.js 18+ (uses native `fetch`).
+Works with Node.js 18+.
-### SDK Configuration
+Installation:
-```python
-# Custom URL
-client = Proxima(base_url="http://192.168.1.100:3210")
+- Copy `sdk/brainstorm.js` into your project
-# Default model for all calls
-client = Proxima(default_model="claude")
-```
+### Legacy SDK Compatibility
+
+Old SDK files still work:
+
+- `sdk/proxima.py`
+- `sdk/proxima.js`
----
+They now understand both the new `brainstorm` response metadata and the legacy `proxima` metadata.
-## MCP Tools
+## MCP
-### Configuration
+### MCP Config
-Add this to your AI coding app's MCP settings:
+Copy the exact JSON from the brAInstorm Settings panel when possible. A typical source checkout config looks like this:
```json
{
"mcpServers": {
- "proxima": {
+ "brainstorm": {
"command": "node",
- "args": ["C:/path/to/proxima/src/mcp-server-v3.js"]
+ "args": ["/absolute/path/to/brAInstorm/src/mcp-server-v3.js"],
+ "cwd": "/absolute/path/to/brAInstorm"
}
}
}
```
-> **Tip:** Copy the exact path from Proxima's Settings panel.
+### Typical MCP Paths
+
+| Install Type | Example MCP Server Path | Example `cwd` |
+|--------------|-------------------------|---------------|
+| Source checkout on macOS | `/Users/you/Dev/brAInstorm/src/mcp-server-v3.js` | `/Users/you/Dev/brAInstorm` |
+| Source checkout on Windows | `C:/path/to/brAInstorm/src/mcp-server-v3.js` | `C:/path/to/brAInstorm` |
+| Packaged macOS app | `/Applications/brAInstorm.app/Contents/Resources/runtime/src/mcp-server-v3.js` | `/Applications/brAInstorm.app/Contents/Resources/runtime` |
+| Packaged Windows app | `C:/Program Files/brAInstorm/resources/runtime/src/mcp-server-v3.js` | `C:/Program Files/brAInstorm/resources/runtime` |
### Compatible Apps
-- **Cursor**
-- **VS Code** (with MCP extension)
-- **Claude Desktop**
-- **Windsurf**
-- **Gemini CLI**
-
----
-
-### 🔍 Search Tools (8)
-
-| Tool | Provider | Description |
-|------|----------|-------------|
-| `deep_search` | Perplexity | Comprehensive web search with file attachment support |
-| `pro_search` | Perplexity | Advanced detailed research with sources |
-| `youtube_search` | Perplexity | Find YouTube videos on any topic |
-| `reddit_search` | Perplexity | Search Reddit discussions & threads |
-| `news_search` | Perplexity | Latest news with timeframe filter |
-| `academic_search` | Perplexity | Scholarly papers & peer-reviewed research |
-| `image_search` | Perplexity | Find images on any topic |
-| `math_search` | Perplexity | Solve math & science problems step-by-step |
-
-### 💻 Code Tools (7)
-
-| Tool | Description |
-|------|-------------|
-| `generate_code` | Generate code in any language from description |
-| `explain_code` | Get detailed code explanations |
-| `debug_code` | Find and fix bugs with error context |
-| `optimize_code` | Performance & readability improvements |
-| `review_code` | Full code review with best practices |
-| `verify_code` | Verify code follows standards |
-| `research_fix` | Research how to fix specific errors |
-
-### 🤖 AI Provider Tools (6)
-
-| Tool | Description |
-|------|-------------|
-| `ask_chatgpt` | Direct query to ChatGPT (with file support) |
-| `ask_claude` | Direct query to Claude (with file support) |
-| `ask_gemini` | Direct query to Gemini (with file support) |
-| `ask_all_ais` | Query ALL enabled AIs simultaneously |
-| `compare_ais` | Compare responses from multiple AIs side-by-side |
-| `smart_query` | Auto-route to best AI via Smart Router |
-
-### 📝 Content & Research Tools (8)
-
-| Tool | Description |
-|------|-------------|
-| `brainstorm` | Generate creative ideas on any topic |
-| `translate` | Translate text between languages |
-| `fact_check` | Verify claims with sources |
-| `find_stats` | Find statistics by topic & year |
-| `how_to` | Step-by-step guides for any task |
-| `writing_help` | Improve and edit writing content |
-| `summarize_url` | Summarize any webpage with focus area |
-| `generate_article` | Write articles in any style |
-
-### 🔬 Analysis Tools (5)
-
-| Tool | Description |
-|------|-------------|
-| `analyze_document` | Analyze documents from URL |
-| `analyze_image_url` | Analyze images via any AI provider |
-| `extract_data` | Extract specific data types from text or URL |
-| `compare` | Compare two items in detail |
-| `generate_image_prompt` | Create detailed AI image generation prompts |
-
-### 📁 File Analysis Tools (2)
-
-| Tool | Description |
-|------|-------------|
-| `analyze_file` | Upload & analyze local files with any AI |
-| `review_code_file` | Upload code file for focused review (bugs, performance, security, style) |
-
-### 🪟 Window Control Tools (4)
-
-| Tool | Description |
-|------|-------------|
-| `show_window` | Show the Proxima app window |
-| `hide_window` | Hide the Proxima app window |
-| `toggle_window` | Toggle window visibility |
-| `set_headless_mode` | Enable/disable headless mode |
-
-### 🔄 Session Tools (2)
-
-| Tool | Description |
-|------|-------------|
-| `new_conversation` | Start fresh conversations on all providers |
-| `clear_cache` | Clear all cached responses |
-
-### 📊 Status & Monitoring Tools (2)
-
-| Tool | Description |
-|------|-------------|
-| `router_stats` | View Smart Router success/failure statistics |
-| `get_typing_status` | Check if any AI provider is currently typing |
-
----
+- Cursor
+- VS Code with an MCP extension
+- Claude Desktop
+- Windsurf
+- Gemini CLI
+
+### Tool Highlights
+
+**Search and Research**
+
+- `deep_search`
+- `pro_search`
+- `news_search`
+- `academic_search`
+- `reddit_search`
+- `youtube_search`
+- `image_search`
+- `math_search`
+
+**Provider Tools**
+
+- `ask_chatgpt`
+- `ask_claude`
+- `ask_gemini`
+- `ask_googleai`
+- `ask_deepseek`
+- `ask_grok`
+- `ask_zai`
+- `ask_copilot`
+- `ask_metaai`
+- `ask_qwen`
+- `ask_all_ais`
+- `compare_ais`
+- `smart_query`
+- `init_provider`
+- `provider_status`
+- `navigate_provider`
+- `debug_provider_dom`
+- `execute_provider_script`
+
+**Skills**
+
+- `list_skills`
+- `run_skill`
+
+**Code and Analysis**
+
+- `generate_code`
+- `review_code`
+- `debug_code`
+- `optimize_code`
+- `verify_code`
+- `analyze_file`
+- `review_code_file`
+- `analyze_document`
+- `analyze_image_url`
+
+**Window and Session**
+
+- `show_window`
+- `hide_window`
+- `toggle_window`
+- `set_headless_mode`
+- `new_conversation`
+- `clear_cache`
+- `router_stats`
+- `get_typing_status`
## Project Structure
-```
-proxima/
+```text
+brAInstorm/
+├── assets/
+│ ├── brainstorm-icon.webp
+│ └── brainstorm-icon.png
├── electron/
-│ ├── main-v2.cjs # Electron main process
-│ ├── browser-manager.cjs # Browser view management
-│ ├── rest-api.cjs # REST API server (OpenAI-compatible)
-│ ├── index-v2.html # Application UI
-│ ├── preload.cjs # Renderer preload script
-│ ├── preload.cjs # Renderer preload bridge
-│ └── provider-preload.cjs # Provider page preload
-├── src/
-│ └── mcp-server-v3.js # MCP server (45+ tools)
+│ ├── main-v2.cjs
+│ ├── rest-api.cjs
+│ ├── browser-manager.cjs
+│ ├── provider-runtime.cjs
+│ ├── provider-senders/
+│ │ └── googleai.cjs
+│ └── index-v2.html
├── sdk/
-│ ├── proxima.py # Python SDK — one function
-│ └── proxima.js # JavaScript SDK — one function
-├── assets/ # Icons, logos, screenshots & demo
+│ ├── brainstorm.py
+│ ├── brainstorm.js
+│ ├── proxima.py
+│ └── proxima.js
+├── skills/
+│ ├── brainstorm.md
+│ ├── code_review.md
+│ ├── convo_history_summarize.md
+│ ├── get_ui_reference.md
+│ ├── github_search.md
+│ └── security_audit.md
+├── src/
+│ ├── mcp-server-v3.js
+│ ├── provider-catalog.cjs
+│ ├── provider-automation.cjs
+│ └── skill-prompts.cjs
└── package.json
```
----
+## Compatibility Notes
+
+- brAInstorm is the new external brand.
+- Legacy `proxima` response metadata is still returned.
+- Legacy `proxima://...` MCP resource URIs still work.
+- Legacy SDK filenames still work.
+- Legacy `PROXIMA_SKILLS_DIR` and `PROXIMA_REST_PORT` are still accepted.
## Troubleshooting
-
-Windows Firewall prompt
+### Windows Firewall prompt
+
+Click "Allow". brAInstorm only accepts local connections on `localhost:3210` and `localhost:19222`.
+
+### Provider shows "Not logged in"
+
+Click the provider tab and log in inside the embedded browser.
+
+### MCP says a provider is disabled
+
+Enable that provider in brAInstorm Settings first. Direct provider tools only work when the provider is enabled.
-Click "Allow" — Proxima only accepts local connections on `localhost:3210` and `localhost:19222`.
-
+### API not responding
-
-Provider shows "Not logged in"
+1. Make sure the brAInstorm app is running.
+2. Visit `http://localhost:3210` in a browser.
+3. Check that at least one provider is enabled and logged in.
-Click the provider tab and login in the embedded browser. Session will be saved.
-
+### MCP tools are missing in Cursor or VS Code
-
-API not responding
+1. Ensure brAInstorm is running.
+2. Recopy the MCP JSON from Settings if you are using a packaged install.
+3. Verify the MCP server path and `cwd`.
+4. Restart the MCP client app.
-1. Make sure Proxima app is running
-2. Visit `http://localhost:3210` in browser
-3. Check at least one provider is enabled and logged in
-
+### A new skill is not showing up
-
-MCP tools not showing in Cursor/VS Code
+1. Make sure the file ends with `.md`.
+2. Put it inside `skills/` or your `BRAINSTORM_SKILLS_DIR`.
+3. Call `GET /v1/skills` or the MCP `list_skills` tool.
+4. Check the startup logs for the discovered skill list.
-1. Ensure Proxima is running
-2. Verify the path in your MCP config is correct
-3. Restart your AI coding app
-
+### File-based MCP tools are not attaching files
----
+Enable **File Attachments** in brAInstorm Settings and use absolute paths for `files` or `filePath`.
## License
This software is for **personal, non-commercial use only**.
See [LICENSE](LICENSE) for details.
----
+## Contributing
+This project is made for the community. Any contributions are welcome.
-
+I put time into evolving it as I needed the tools and I'm sure you will need more features - well
+add them and let's evolve this together.
-**Proxima v3.0.0** — One API, All AI Models ⚡
+Original idea came from [Zen4-bit](https://github.com/Zen4-bit). He didn't want to built out the
+modular provider architecture so we forked and reworked it. But let's not keep reforking - lets
+work on this together!
-Made by [Zen4-bit](https://github.com/Zen4-bit)
+Current models and features by [MindFlowGo](https://github.com/mindflowgo/)
-
+ Free Multi-AI MCP Server
+ No API keys required. Connect your enabled AI providers locally.
+
+
+
Get Started
+
+
+
1
+
+
Enable Providers
+
Click Settings and toggle the AI providers you want to use
+
+
+
+
+
2
+
+
Login to Each Provider
+
Click each tab above and login to your accounts
+
+
+
+
3
+
+
Copy MCP Config
+
Go to Settings and copy the config to your AI coding app
+
+
+
+
+
+
+
+
+
+
+
+
+
Settings Workspace
+
Control providers, skills, and local integrations from one place.
+
+ brAInstorm scans live skills, manages browser-backed providers, and exposes everything through the local MCP server. This panel keeps the operational pieces aligned without burying them in separate cards.
+
+
+
+
+ Providers
+ Toggle the browser-backed services that should be available in the app and through MCP.
+
+
+ Skills
+ Scan, inspect, and edit reusable prompt templates from the live skills/ directory.
+
+
+ MCP
+ Copy exact config JSON or an AI-friendly setup prompt for another coding assistant.
+
+
+
+
+
+
+
+
AI Providers
+
+ Enable the services brAInstorm should initialize and expose. Enabled providers appear in the top navigation and can be launched on startup.
+
+
+
+
+
+
+
+
+
+
SK Skills
+
+ Skills are always discovered by scanning the live skills/ directory. Select any prompt to inspect or edit it, or create a new one and draft the template in the editor.
+
+
+
+
+
+
+
+
+
+
Scanned Directory
+
Loading skill registry…
+
+
+
+
Template Variables
+
+ Use placeholders such as ${subject},
+ ${desc}, or
+ ${fullCode}. brAInstorm detects them from the prompt file and exposes them automatically when the skill is used.
+
+
+
+
+
+
+
Discovered Prompts
+
Loading…
+
+
+
+ Loading skills…
+ The scanned prompt files will appear here.
+
+
+
+
+
+ No skill selected yet
+ Choose a discovered skill or start a new one to edit its prompt template.
+
+
+
+
+
+
+
+
+
+
UA Browser Identity
+
+ brAInstorm uses this browser user-agent for provider views, auth popups, and request header spoofing. Changes apply to future requests immediately, while existing tabs may need a reload.
+
+
+
+
+
+
+
+
+
+
+
+ The default stays in the provider catalog. Clear the field or use reset if you want brAInstorm's bundled Chrome-style identity back.
+
+
+
+
+
+
+
+
IM Captured Images
+
+ When a provider generates images, brAInstorm downloads them locally first and returns those local file paths in the MCP response.
+
+
+
+
+
+
+
+
+
+
+
+ Absolute paths are recommended. If left blank, brAInstorm stores generated images in a temporary local folder and returns those absolute file paths to MCP clients.
+
+
+
+
+
+
+
+
+
+
MCP MCP Configuration
+
+ Add the brAInstorm MCP server to your AI coding assistant. Use the exact manual config or hand another assistant a prewritten setup prompt.
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
+
+
Add the brAInstorm MCP server to this application's MCP configuration.
+
+brAInstorm is a multi-AI MCP server that connects your enabled providers through a local server.
+Here is the MCP configuration to add:
+
+
+
+
+Confirm when done
+
+
+
+
+
+
+
FI File Reference
+
+ When enabled, MCP calls can include local file paths that brAInstorm uploads as attachments to AI providers.
+
+
+
+
+
+
Enable File Attachments
+
Allow MCP to upload images, code, and documents directly into provider chats.
+
+
+
+
+ File Reference Active
+ Use the filePath parameter in MCP calls to attach local files to the prompt.
+
+
+
+
+
+
+
+
+
+
Message
+
+
+
+
+
+
+ 🍪 Cookie Login - Provider
+
+
+
+
+
+ � How to get cookies:
+
+
Install EditThisCookie or Cookie-Editor extension in Chrome
+
Go to provider site in your browser and login normally
+
Click the cookie extension icon → Export (as JSON)
+
Paste the copied JSON below
+
+
+
+
+
+
+ Optional browser storage:
+
+ Leave this empty unless a provider needs extra local or session storage in addition to cookies.
+