Your personal AI at work.
From now on we no longer share a single ChatGPT account. Everyone gets their own AI access through Nexus — chat, coding, images, even connecting tools like ClickUp — each with their own quota. Follow this guide; it takes 5 minutes.
The concept
Two addresses you need to know
Nexus is where you manage keys & quotas. Chat is where you actually talk with the AI.
Nexus
nxslabs.space
Your personal dashboard: get your API key, check remaining quota/balance, and monitor usage.
Chat
chat.nxslabs.space
Where you chat: pick a model, send images, and use connectors like ClickUp.
Get started
Getting started in chat
Sign in and go — every model is ready automatically, no key to paste.
- 1
Sign in at chat.nxslabs.space
Open chat.nxslabs.space → click Sign in with Google → choose your work account. That's it — no API key to paste.
- 2
Pick a model and start
Choose a model family — GPT, Claude, Gemini, DeepSeek, Qwen, or Grok (each shows its own logo) — and just type. Your access is set up automatically from your Nexus account, so all models are ready right away.
- 3
That's all for chat
As long as your Nexus quota/allowance is active, chat keeps working. Only coding tools (OpenCode, Cursor, the API) need your key — grab it from the dashboard (see For developers below).
Models
Pick the model that fits the job
All models are available. Click the model name at the top left of chat to switch. Quick guide:
gpt-mini or gemini-flash is more than enough and saves your quota.gpt-5.6-sol, gpt-5.6-terra, gpt-5, gpt-mini), Gemini, Claude, Grok, and qwen-vl-max can read images. deepseek-* and plain qwen-max/qwen-plus are text-only. In coding tools (OpenCode/Cursor), a model only accepts images if its config declares the image input modality — see For developers below.Connectors Open to all
Connect your tools from inside chat
Everyone can enable the built-in connectors (ClickUp, Notion, Linear, GitHub, and more) or add their own MCP server — no special access needed.
- 1
Enable a connector (or add your own)
In the message box, click the MCP Servers button → tick a built-in connector (e.g. clickup), or add your own MCP server. The first time you use one, you authorize it with your own account.
- 2
Ask in plain language
For example: “Create a task ‘Follow up with client A’ in the Sales list, due Friday”, or “Show my tasks due this week”. The AI will call ClickUp and show you the results.
For developers
Use it in coding tools (OpenCode, Cursor, Claude Code)
The same key works via API in AI coding tools — the endpoint is OpenAI-compatible.
- Base URL —
https://api.nxslabs.space/v1 - API key — get it from the dashboard (
sk-…). Not from api.nxslabs.space — that's just the API gateway.
OpenCode
- 1
Type
/connect→ choose OtherProvider ID: type
nexus. (The API key is set inopencode.jsonin the next step — OpenCode won't forward the/connectkey for a custom provider.) - 2
Fill the model list automatically — paste this prompt into OpenCode
Copy the prompt below, paste it into the OpenCode chat (any model will do, including a free one), and run it. It asks Nexus for the model block that matches your key and merges it into your config — nothing to figure out by hand. Run the same prompt again whenever you hear a model was added; that is all “updating” means here. Replace
<PASTE_YOUR_NEXUS_KEY>with yoursk-…key from the dashboard.Set up (or refresh) the "nexus" provider in OpenCode for me. 1. Fetch my ready-made provider block: curl -s https://nxslabs.space/api/opencode.json -H "Authorization: Bearer <PASTE_YOUR_NEXUS_KEY>" (Windows PowerShell: curl.exe -s "https://nxslabs.space/api/opencode.json" -H "Authorization: Bearer <PASTE_YOUR_NEXUS_KEY>") The response already contains ONLY the models my key is allowed, each with the correct modalities — including "image" on the ones that can read pictures. Do NOT add, remove, rename or re-order anything inside it. If the command returns 401 my key is wrong; stop and tell me instead of guessing a list. 2. Find my config file: ~/.config/opencode/opencode.json (or .jsonc), or opencode.json in the project root. Create it if neither exists, with {"$schema": "https://opencode.ai/config.json"}. 3. MERGE, do not overwrite: replace ONLY the provider.nexus key with the block from step 1. Every other section — especially "mcp" and any other providers — must survive untouched. If provider.nexus already exists, replace it wholesale so removed models actually disappear. 4. Tell me what changed: which models were added, and which were removed. Then remind me to FULLY RESTART OpenCode — it reads model capabilities once at startup, so a running instance will not see any of this. 5. Detect my OS/shell (macOS zsh, Linux/WSL bash, Windows PowerShell) and give me the exact command to persist NEXUS_API_KEY=<PASTE_YOUR_NEXUS_KEY>: - macOS (zsh): append "export NEXUS_API_KEY=..." to ~/.zshrc, then source it - Linux / WSL (bash): append to ~/.bashrc, then source it - Windows PowerShell: setx NEXUS_API_KEY "..." (takes effect in NEW terminals) Keep apiKey in the config as "{env:NEXUS_API_KEY}" — OpenCode does NOT forward the /connect key for custom providers, so a literal key there is both a leak and unnecessary.Keeping the list current (one command)
OpenCode does not discover models on its own for a custom provider, so whatever is written in
opencode.jsonis what you get — new models added to Nexus simply never appear, with no error to tell you. Nexus can hand you the current block for your key:curl -s -H "Authorization: Bearer $NEXUS_API_KEY" \ https://nxslabs.space/api/opencode.json
It returns only the models your key is allowed, with the
imagemodality already set on the ones that can read pictures. Paste theproviderblock into youropencode.json(replacing the old one), then fully restart OpenCode — it reads model capabilities once at startup. On Windows PowerShell:curl.exe -s -H "Authorization: Bearer $env:NEXUS_API_KEY" https://nxslabs.space/api/opencode.json
Worth re-running whenever you hear a new model has been added — it is the same endpoint the setup prompt above uses, so the two can never disagree.
Or fill it in manually if you prefer — create
opencode.jsonand register the models you want:{ "$schema": "https://opencode.ai/config.json", "provider": { "nexus": { "npm": "@ai-sdk/openai-compatible", "name": "Nexus", "options": { "baseURL": "https://api.nxslabs.space/v1", "apiKey": "{env:NEXUS_API_KEY}" }, "models": { "nexus-mini": { "name": "Nexus Mini", "modalities": { "input": ["text"], "output": ["text"] } }, "nexus-max": { "name": "Nexus Max", "modalities": { "input": ["text"], "output": ["text"] } }, "deepseek-v4-flash":{ "name": "DeepSeek V4 Flash", "modalities": { "input": ["text"], "output": ["text"] } }, "qwen-plus": { "name": "Qwen Plus", "modalities": { "input": ["text"], "output": ["text"] } }, "deepseek-chat": { "name": "DeepSeek Chat", "modalities": { "input": ["text"], "output": ["text"] } }, "deepseek-vision": { "name": "DeepSeek Vision", "attachment": true, "modalities": { "input": ["text","image"], "output": ["text"] } }, "nexus-nano": { "name": "Nexus Nano", "modalities": { "input": ["text"], "output": ["text"] } }, "gpt-nano": { "name": "GPT Nano", "modalities": { "input": ["text"], "output": ["text"] } }, "gpt-4o-mini": { "name": "GPT 4o Mini", "modalities": { "input": ["text"], "output": ["text"] } }, "vision-mini": { "name": "Vision Mini", "attachment": true, "modalities": { "input": ["text","image"], "output": ["text"] } }, "gpt-oss-mini": { "name": "GPT OSS Mini", "modalities": { "input": ["text"], "output": ["text"] } }, "gpt-5-mini": { "name": "GPT 5 Mini", "modalities": { "input": ["text"], "output": ["text"] } }, "llama-scout": { "name": "Llama Scout", "attachment": true, "modalities": { "input": ["text","image"], "output": ["text"] } }, "gemini-flash-lite":{ "name": "Gemini Flash Lite", "attachment": true, "modalities": { "input": ["text","image"], "output": ["text"] } }, "minimax": { "name": "MiniMax", "modalities": { "input": ["text"], "output": ["text"] } }, "sea-lion": { "name": "SEA LION", "modalities": { "input": ["text"], "output": ["text"] } }, "mistral": { "name": "Mistral", "modalities": { "input": ["text"], "output": ["text"] } }, "gemini-flash": { "name": "Gemini Flash", "attachment": true, "modalities": { "input": ["text","image"], "output": ["text"] } }, "gpt-mini": { "name": "GPT Mini", "attachment": true, "modalities": { "input": ["text","image"], "output": ["text"] } }, "claude-haiku": { "name": "Claude Haiku", "attachment": true, "modalities": { "input": ["text","image"], "output": ["text"] } }, "gpt-oss": { "name": "GPT OSS", "modalities": { "input": ["text"], "output": ["text"] } }, "nemotron": { "name": "Nemotron", "modalities": { "input": ["text"], "output": ["text"] } }, "qwen3.5": { "name": "Qwen3.5", "modalities": { "input": ["text"], "output": ["text"] } }, "grok-4.3": { "name": "Grok 4.3", "modalities": { "input": ["text"], "output": ["text"] } }, "grok-4.6": { "name": "Grok 4.6", "attachment": true, "modalities": { "input": ["text","image"], "output": ["text"] } }, "deepseek-v4-pro": { "name": "DeepSeek V4 Pro", "modalities": { "input": ["text"], "output": ["text"] } }, "qwen-max": { "name": "Qwen Max", "modalities": { "input": ["text"], "output": ["text"] } }, "qwen-vl-max": { "name": "Qwen VL Max", "attachment": true, "modalities": { "input": ["text","image"], "output": ["text"] } }, "gemini-3-flash": { "name": "Gemini 3 Flash", "attachment": true, "modalities": { "input": ["text","image"], "output": ["text"] } }, "claude-sonnet": { "name": "Claude Sonnet", "attachment": true, "modalities": { "input": ["text","image"], "output": ["text"] } }, "kimi": { "name": "Kimi", "modalities": { "input": ["text"], "output": ["text"] } }, "kimi-code": { "name": "Kimi Code", "modalities": { "input": ["text"], "output": ["text"] } }, "glm": { "name": "GLM", "attachment": true, "modalities": { "input": ["text","image"], "output": ["text"] } }, "glm-coder": { "name": "GLM Coder", "modalities": { "input": ["text"], "output": ["text"] } }, "glm-mini": { "name": "GLM Mini", "modalities": { "input": ["text"], "output": ["text"] } }, "qwen3-coder": { "name": "Qwen3 Coder", "modalities": { "input": ["text"], "output": ["text"] } }, "glm-max": { "name": "GLM Max", "modalities": { "input": ["text"], "output": ["text"] } }, "kimi-k3": { "name": "Kimi K3", "modalities": { "input": ["text"], "output": ["text"] } }, "o4-mini": { "name": "o4 Mini", "attachment": true, "modalities": { "input": ["text","image"], "output": ["text"] } }, "gemini-3-pro": { "name": "Gemini 3 Pro", "attachment": true, "modalities": { "input": ["text","image"], "output": ["text"] } }, "gpt-5.6-terra": { "name": "GPT 5.6 Terra", "attachment": true, "modalities": { "input": ["text","image"], "output": ["text"] } }, "gpt-5.6-sol": { "name": "GPT 5.6 Sol", "attachment": true, "modalities": { "input": ["text","image"], "output": ["text"] } }, "gpt-5": { "name": "GPT 5", "attachment": true, "modalities": { "input": ["text","image"], "output": ["text"] } }, "claude-opus": { "name": "Claude Opus", "attachment": true, "modalities": { "input": ["text","image"], "output": ["text"] } } } } } }To read images the model must have
"modalities": { "input": ["text","image"] }(plus"attachment": true), shown above for the vision models. Without theimagemodality, OpenCode says “this model does not support image input” and drops the picture — that was the real cause. After editing, fully restart OpenCode (it caches model capabilities at startup). The block above is generated from the live catalogue, so theimagemodality is already correct per model — text-only ones keepinput: ["text"].Set your key as an env var — pick the line for your OS (key from the dashboard):macOS (zsh):echo 'export NEXUS_API_KEY=sk-…' >> ~/.zshrc && source ~/.zshrcLinux / WSL (bash):echo 'export NEXUS_API_KEY=sk-…' >> ~/.bashrc && source ~/.bashrcWindows (PowerShell):setx NEXUS_API_KEY "sk-…"— open a new terminal afterwards.Prefer not to use an env var? Put the key inline instead:"apiKey": "sk-…"(don't commit that file to git). - 3
Pick the
nexus/gpt-5modelOpen
/models→ all Nexus models appear under the nexus provider. Switch freely; they all draw from the same quota.Whichever model you pick (GPT, Claude, DeepSeek, Gemini) is still recorded in the Nexus dashboard and deducted from your quota — because it goes through your own key. It shows up with a 1–5 minute delay (not realtime). Use a single key of your own; don't share your key with others, or the usage gets merged together.
Quota & balance
How usage is counted
Every request to the AI uses part of your quota — automatically, no math needed on your end.
- Usage is deducted per token. You can check your remaining quota/balance anytime in the Nexus dashboard.
- When your quota runs out, access stops automatically — no surprise bills.
- Need more? Contact your unit's admin for a top-up / quota increase.
Ground rules
What to do & what not to do
Do
- Use only your own key.
- Choose an economical model for lightweight tasks.
- Review the AI's output before relying on it for important decisions.
- Report anything odd to an admin, or if your key leaks.
Don't
- Share or paste your key in public places / group chats.
- Use one account for the whole team.
- Paste sensitive customer data unnecessarily (ID numbers, cards, passwords).
- Tell ClickUp to bulk-delete/modify without checking first.
FAQ
Frequently asked questions
Why don't we share one ChatGPT account anymore?+−
Sharing a single account breaks the terms of service, makes it impossible to track who used what, and if one person hits a limit or gets blocked, everyone goes down with them. With Nexus, each person has their own key: secure, personal, and with usage tracked cleanly.
Is my usage monitored?+−
What Nexus records is cost & token count per person — for quota and reporting purposes. Your conversation history is stored in your account at chat.nxslabs.space. Treat it like a company work tool: avoid putting in personal data you don't need to.
Chat stops working or says my access ran out?+−
Chat needs no key — access is automatic from your Nexus account. If it stops, your quota/allowance is likely used up: check the Nexus dashboard and contact an admin for a top-up. (Access also turns off if your Nexus account is deactivated.)
Can I use it in OpenCode, Cursor, or Claude Code too?+−
Yes. The same key works in any OpenAI-compatible tool — base URL https://api.nxslabs.space/v1. See the 'For developers' section above (OpenCode) and the Claude Code/Cursor/Python/Node/curl examples in the Nexus dashboard.
Which model should I use?+−
Start with gpt-mini or gemini-flash for everyday things. Move up to gpt-5 or claude-sonnet only when the task is heavy (analysis, long-form writing, complex coding).
How do I use connectors / MCP?+−
Open the MCP Servers menu in the message box. Everyone can enable the built-in connectors (ClickUp, Notion, Linear, GitHub, and more) or add their own MCP server — the first time you use one, you authorize it with your own account.
My key leaked / I want to replace it.+−
Tell an admin right away. The key can be deactivated and replaced on the Nexus side, then you paste the new key into chat.
Need help
Still stuck?
Contact your unit admin or IT team. Include a screenshot of the error message if you have one — it really helps speed up the fix.