Skip to content

Repository files navigation

Tusk AI Companion

A desktop AI client for Windows, built on Electron. It chats with 18 models through tuskcentral.ai, runs a five-agent research pipeline, and stages debates between two models under an AI judge.

Features

  • Streaming chat: replies render as markdown with syntax highlighting, KaTeX math, and bar charts generated from data tables. Cancel any response mid-stream.
  • Ultra Research: four agents (Search, Reasoning, Logic, Analytics) investigate your question in parallel; a fifth synthesizes their findings into one report.
  • Debate mode: two models argue a topic for up to six rounds while a judge scores each turn; a Chief Justice model delivers the final verdict.
  • Voice and tone: get answers as Analytical/Technical, Executive Briefing, Casual Advisor, or Academic Peer-Review.
  • Web search toggle on every message.
  • Prompt tools: rewrite a rough prompt or fix its typos before sending.
  • Auto titles: the app names each new chat from your first message.
  • Chat history on disk, with search, rename, pin, delete, and Markdown export.
  • Discord Rich Presence: detailed, minimal, or incognito modes showing your current model and activity.
  • Close to tray: keep sessions alive when the window closes.
  • Zoom from 70% to 150% by keyboard or Ctrl+mouse wheel.
  • No CDN calls: marked, highlight.js, and KaTeX ship inside the app.

Getting Started

Prerequisites

  • Node.js 18 or newer
  • npm (bundled with Node.js)

Install

npm install

Run in development

npm start

Build the Windows installer

npm run build

electron-builder writes Tusk AI Companion-Setup-{version}.exe to dist/.

Keyboard Shortcuts

Shortcut Action
Enter Send message
Shift+Enter New line
Ctrl+N Start a new chat
Ctrl+E Export the current chat as Markdown
Ctrl+F Focus chat history search
Ctrl+, Toggle the settings pane
Ctrl+= / Ctrl+- Zoom in / out
Ctrl+0 Reset zoom to 100%
Ctrl+Mouse Wheel Zoom from anywhere
Escape Close overlays

Project Structure

├── main.js                   # Main process: windows, tray, IPC, history storage
├── preload.js                # contextBridge API between main and renderer
├── build/                    # Application icons
└── src/
    ├── config/
    │   ├── constants.js      # API endpoints and default model id
    │   └── models.json       # Catalog of 18 models
    ├── services/
    │   ├── chatService.js    # Streaming chat, research pipeline, debate engine
    │   ├── streamParser.js   # Chunk-safe JSON extraction from streams
    │   └── discordService.js # Discord Rich Presence management
    └── ui/
        ├── index.html        # App shell
        ├── renderer.js       # Rendering pipeline, sessions, shortcuts
        ├── style.css         # Dark theme stylesheet
        └── vendor/           # Local copies of marked, highlight.js, KaTeX

Notes

  • All AI requests go to tuskcentral.ai.
  • Chat history lives at %APPDATA%/tusk-companion/tusk_history.json. Writes go to a temp file first and then rename, so a crash mid-save cannot corrupt the file.
  • Stream chunks coalesce into one IPC message per frame (~16 ms), which keeps fast token streams responsive.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages