SkillAgentSearch skills...

Tabby

Autocomplete for everything you type, anywhere

Install / Use

npx skills add TabbyAIKeyboard/tabby

Installs into whichever agent you are using.

About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Tabby

<div align="center"> <img src="nextjs-backend/public/logos/tabby-header.png" alt="Tabby Logo" />

A system-wide AI keyboard layer that transforms your input device into a real-time AI collaborator.

CI GitHub stars GitHub forks GitHub issues GitHub last commit GitHub release License: MIT PRs Welcome

Electron Next.js React Supabase

Features · Screenshots · Tech Stack · Getting Started · Architecture · Docs · Contributing · License

</div>

Features

Tabby lives at the point of input - no more switching between apps for AI help.

| Feature | Description | |---|---| | Interview Copilot | Real-time coding interview assistance with screen capture and multi-tab analysis | | Context-Aware Autocomplete | Inline AI suggestions based on what you're typing, anywhere on your system | | Desktop Automation | Full Windows MCP integration for system-level control | | Persistent Memory | Remembers your preferences, coding style, and past interactions via Mem0 | | Invisible Typing | AI types directly into any application, character-by-character | | Voice Agent | Voice-to-text, text-to-voice, and live conversational agent | | Action Menu | Quick AI actions on selected text — fix grammar, change tone, expand, summarize |


Screenshots

<div align="center">

Interview Copilot

<img src="nextjs-backend/public/landing/tabby-interview-copilot.png" alt="Interview Copilot" width="700" />

<br /><br />

Interview Ghost Text

<img src="nextjs-backend/public/landing/tabby-interview-ghost.png" alt="Interview Ghost Text" width="700" />

<br /><br />

Action Menu

<img src="nextjs-backend/public/landing/tabby-actions.png" alt="Action Menu" width="700" />

<br /><br />

Voice Agent

<img src="nextjs-backend/public/landing/tabby-voice-agent.png" alt="Voice Agent" width="700" />

<br /><br />

Knowledge Graph

<img src="nextjs-backend/public/landing/tabby-kg.png" alt="Knowledge Graph" width="700" />

<br /><br />

Memories Dashboard

<img src="nextjs-backend/public/landing/tabby-memories.png" alt="Memories Dashboard" width="700" /> </div>

Tech Stack

| Layer | Technology | |---|---| | Desktop App | Electron 38 | | Frontend | Next.js 15, React 19, Tailwind CSS | | AI | Vercel AI SDK, OpenAI / Groq / Cerebras / Google Gemini | | Memory | Mem0 (Supabase vector store + Neo4j graph) | | Desktop Automation | nut-js, node-window-manager, Windows MCP | | Database | Supabase (Local Docker) |


Keyboard Shortcuts

<details> <summary><b>Global Shortcuts</b></summary>

| Shortcut | Action | |---|---| | Ctrl+\ | Open / close action menu | | Ctrl+Space | Get AI suggestion | | Ctrl+Shift+B | Toggle brain panel | | Ctrl+Alt+I | Interview ghost text | | Ctrl+Alt+J | Voice Agent | | Ctrl+Shift+X | Stop autotyping | | Ctrl+Shift+T | Cycle transcribe modes | | Ctrl+Alt+T | Toggle voice transcription |

</details> <details> <summary><b>Interview Copilot</b></summary>

| Shortcut | Action | |---|---| | Alt+X | Capture screen & analyze coding problem | | Alt+Shift+X | Update analysis with new constraints | | Alt+N | Get code suggestions / improvements | | Ctrl+1-6 | Switch tabs (Chat, Idea, Code, Walkthrough, Test Cases, Memories) |

</details> <details> <summary><b>Navigation</b></summary>

| Shortcut | Action | |---|---| | Ctrl+Arrow | Move floating window | | Esc | Back / close | | Enter | Accept & paste |

</details>

Getting Started

Prerequisites

  • Node.js 18+
  • Python 3.12+ (for memory backend)
  • uv — Python package manager
  • pnpm — JavaScript package manager
  • Docker Desktop — for local Supabase
  • An OpenAI API key
<details> <summary><b>Optional API keys</b></summary>
  • Google Generative AI API key
  • XAI API key
  • Groq API key
  • Cerebras API key
  • OpenRouter API key
  • Tavily API key (web search)
  • Neo4j instance (knowledge graph)
</details>

1. Clone & Install

git clone https://github.com/TabbyAIKeyboard/tabby.git
cd tabby

# Frontend
cd frontend && pnpm install

# Next.js Backend
cd ../nextjs-backend && pnpm install

# Memory Backend
cd ../backend && uv sync

2. Database Setup

We use a local Supabase instance running in Docker.

# Start Docker Desktop first, then:
npx supabase init     # first time only
npx supabase start    # starts all services (~10 s after first run)

After startup, note the API URL, anon key, and service_role key printed in the terminal.

<details> <summary><b>Supabase Quick Reference</b></summary>

| Action | Command | | --- | --- | | Start | npx supabase start | | Stop | npx supabase stop | | Status | npx supabase status | | Admin UI | http://localhost:54323 | | Reset DB | npx supabase db reset |

Note: Docker Desktop must be running before npx supabase start.

</details> <details> <summary><b>Neo4j (Knowledge Graph — Optional)</b></summary>
  1. Create a free instance at Neo4j AuraDB.
  2. Save the credentials text file (URI, username, password).
  3. Note the Instance ID and Instance Name from the dashboard.
</details>

3. Environment Variables

Copy the example env files, then fill in your credentials:

cp frontend/env.example frontend/.env.local
cp nextjs-backend/env.example nextjs-backend/.env.local
cp backend/env.example backend/.env
<details> <summary><b>Frontend</b> - <code>frontend/.env.local</code></summary>
NEXT_PUBLIC_SUPABASE_URL="http://127.0.0.1:54321"
NEXT_PUBLIC_SUPABASE_ANON_KEY="<ANON_KEY from supabase status>"
SUPABASE_ADMIN="<SERVICE_ROLE_KEY from supabase status>"

NEXT_PUBLIC_APP_NAME="Tabby"
NEXT_PUBLIC_APP_ICON="/logos/tabby-logo.png"

NEXT_PUBLIC_API_URL="http://localhost:3001"
NEXT_PUBLIC_MEMORY_API_URL="http://localhost:8000"
</details> <details> <summary><b>Next.js Backend</b> - <code>nextjs-backend/.env.local</code></summary>
NEXT_PUBLIC_SUPABASE_URL="http://127.0.0.1:54321"
NEXT_PUBLIC_SUPABASE_ANON_KEY="<ANON_KEY from supabase status>"
SUPABASE_ADMIN="<SERVICE_ROLE_KEY from supabase status>"

RESEND_API_KEY=""
RESEND_DOMAIN=""

NEXT_PUBLIC_APP_NAME=Tabby
NEXT_PUBLIC_APP_ICON='/logos/tabby-logo.png'

# AI Providers
OPENAI_API_KEY=""
GOOGLE_GENERATIVE_AI_API_KEY=""
GROQ_API_KEY=""
CEREBRAS_API_KEY=""
OPENROUTER_API_KEY=""

TAVILY_API_KEY=""

MEMORY_API_URL="http://localhost:8000"
</details> <details> <summary><b>Backend</b> - <code>backend/.env</code></summary>
OPENAI_API_KEY=
SUPABASE_CONNECTION_STRING="postgresql://postgres:postgres@127.0.0.1:54322/postgres"

# Neo4j (optional)
NEO4J_URL=
NEO4J_USERNAME=
NEO4J_PASSWORD=
</details>

4. Run

# Start Supabase first (Docker Desktop must be running)
npx supabase start

# Start all services in dev mode (backend + frontend + nextjs-backend)
pnpm dev

All three services start in parallel with color-coded logs.

<details> <summary><b>Run services individually</b></summary>
# Terminal 1 — Memory backend
cd backend && uv run main.py

# Terminal 2 — Next.js backend
cd nextjs-backend && pnpm dev

# Terminal 3 — Windows MCP server (optional)
cd frontend && pnpm run windows-mcp

# Terminal 4 — Electron app
cd frontend && pnpm dev
</details> <details> <summary><b>Production mode</b></summary>
# Build and start everything
pnpm prod

# Or step-by-step:
pnpm build    # builds frontend + nextjs-backend
pnpm start    # starts all services in production mode
</details> <details> <summary><b>Linux (X11)</b></summary>

The Linux build uses xdotool for window activation and synthetic key input, and reads the X11 PRIMARY selection directly for capture (so highlighting text in any X11 app is enough — no need to also Ctrl+C). It is tested on GNOME / X11; Wayland sessions will need to fall back to XWayland.

Prerequisites

sudo apt install xdotool

Then run as on the other platforms:

cd frontend
pnpm install
pnpm dev
</details>

Once running:

| Service | URL | |---|---| | Supabase API | http://127.0.0.1:54321 | | Supabase Studio | http://localhost:54323 | | Frontend (Electron) | http://localhost:3000 | | Next.js Backend | http://localhost:3001

Related Skills

View on GitHub
GitHub Stars7
CategoryDevelopment
Updated2mo ago
Forks1

Languages

TypeScript

Security Score

90/100

Audited on Jun 4, 2026

No findings