Overview

The Joker is an Agentic Terminal — an AI-powered autonomous coding assistant built with TypeScript/Node.js that can execute complex coding tasks, scrape the web with stealth capabilities, generate complete project structures from natural language descriptions, run passive OSINT reconnaissance, and deploy applications with Docker and CI/CD pipelines.

Powered by LM Studio (local inference) and optionally by AirLLM (70B models on 4GB RAM), the Joker requires zero cloud services.

RequirementMinimumRecommended
Node.js18.x22.x
Memory4 GB8 GB
Storage1 GB5 GB
OSWindows 10 / macOS 12 / LinuxLatest versions
LLM ServerAny OpenAI-compatibleLM Studio

Runtime Dependencies

Source: SPDX-2.3 bill-of-materials · com.github.ratna3/theJoker@master

PackageVersionPurpose
axios^1.13.2HTTP client — LM Studio & AirLLM API calls
cheerio^1.1.2Server-side HTML parsing for web scraping
chalk^5.6.2Terminal output colour formatting
chokidar^5.0.0File-system watcher for hot-reload & project monitoring
dotenv^17.2.3Environment variable loader (.env)
inquirer^13.0.1Interactive CLI prompts & backend selection
ora^9.0.0Terminal spinner for async operations
puppeteer^24.31.0Headless Chromium for stealth web scraping
puppeteer-extra^3.3.6Plugin framework wrapping Puppeteer
puppeteer-extra-plugin-stealth^2.11.2Anti-detection patches (webdriver, WebGL, plugins)
readline-sync^1.4.10Synchronous stdin for interactive terminal sessions
uuid^13.0.0Unique ID generation for sessions & tasks
winston^3.18.3Structured logging with file & console transports

Dev Dependencies

PackageVersionPurpose
typescript^5.9.3TypeScript compiler
ts-node^10.9.2Development hot-reload runner
ts-jest^29.4.6Jest TypeScript transformer
jest^30.2.0Test runner (980 tests, 22 suites)
eslint^9.39.1Linter
@typescript-eslint/eslint-plugin^8.48.1TypeScript ESLint rules
@typescript-eslint/parser^8.48.1TypeScript ESLint parser
prettier^3.7.3Code formatter
rimraf^6.1.2Cross-platform directory cleanup

Quick Start

bash
# Clone the repository
git clone https://github.com/ratna3/theJoker.git
cd theJoker

# Install dependencies
npm install

# Copy environment config
cp .env.example .env
# Open .env and set LM_STUDIO_BASE_URL + LM_STUDIO_MODEL

# Build and run
npm run build
npm start
Start LM Studio and load a model (e.g. qwen2.5-coder-14b-instruct-uncensored) before running The Joker. The default server URL is http://localhost:1234.

Installation

Step-by-step

  1. Clone or fork the repository from GitHub
  2. Run npm install to install all dependencies
  3. Copy .env.example to .env and configure
  4. Open LM Studio, load your preferred model, start the local server
  5. Run npm run build to compile TypeScript
  6. Run npm start to launch The Joker

Development mode

bash
# Hot reload with ts-node
npm run dev

# Watch mode TypeScript compilation
npm run build:watch

Docker

Quick Run

bash
docker build -t thejoker .

docker run -it --rm \
  --env-file .env \
  -v ./projects:/app/projects \
  -v ./reports:/app/reports \
  --add-host=host.docker.internal:host-gateway \
  thejoker
Use host.docker.internal as LM_STUDIO_BASE_URL so the container can reach LM Studio running on your host machine.

Docker Compose

bash
# Start detached
docker compose up -d

# Attach to the interactive terminal
docker attach thejoker

# Stop
docker compose down

Configuration

All configuration is done via a .env file in the project root.

env
# LM Studio
LM_STUDIO_BASE_URL=http://localhost:1234
LM_STUDIO_MODEL=qwen2.5-coder-14b-instruct-uncensored
LM_STUDIO_API_KEY=not-needed

# Agent
AGENT_MAX_ITERATIONS=10
AGENT_TIMEOUT_MS=60000
AGENT_VERBOSE=true

# Scraper
SCRAPER_HEADLESS=true
SCRAPER_TIMEOUT_MS=30000

# AirLLM (optional)
AIRLLM_MODEL=garage-bAInd/Platypus2-70B-instruct
AIRLLM_PORT=8899
AIRLLM_MAX_LENGTH=512
AIRLLM_COMPRESSION=none     # none | 4bit | 8bit
AIRLLM_PYTHON_PATH=python

# Logs
LOG_LEVEL=info

AirLLM Setup

AirLLM enables running 70B-parameter models on as little as 4GB GPU RAM using layer-wise inference. Each transformer layer is loaded to GPU on demand, processed, then offloaded.

Inference is slow (30–120s per response). AirLLM is best for occasional heavy queries — switch back to LM Studio for fast iteration.

Setup

bash
# Install Python requirements
pip install -r requirements-airllm.txt

# Inside The Joker, switch backend:
joker > airllm
joker > airllm meta-llama/Llama-2-70b-chat-hf

# Check status
joker > airllm-status

# Revert to LM Studio
joker > airllm-stop

Vibe Coding

Describe the app you want in plain English and The Joker builds it end-to-end — from framework scaffolding to file generation to dependency install to launching a dev server.

bash
joker > vibe Build me a portfolio website with dark mode and a contact form

# 🧠 Analyzing your idea...
# 📁 Scaffolding React project: portfolio-website
# 🧬 Generating 6 components, 3 pages
# 📝 Writing 9 files
# 📦 Installing dependencies...
# 🚀 Starting dev server...
# 🚀 App live at: http://localhost:3000

# Refine the running app:
joker > vibe Add a skills section with animated bars

# Stop the dev server:
joker > vibe-stop
CommandAliasesDescription
vibe <description>build, create-appBuild a complete app from natural language
vibe-stopstop-devStop the running dev server

Supported frameworks

React · Next.js · Vue · Express · Node.js (auto-detected from description)

OSINT Recon

One command performs comprehensive passive reconnaissance on a domain — no active scanning, no noise.

bash
joker > recon example.com
# aliases: scan, osint, investigate

# Output:
# 📡 DNS (A, AAAA, MX, TXT, NS, CNAME, SOA)
# 🔎 WHOIS (registrar, dates, nameservers)
# 🔐 SSL/TLS (certificate, issuer, expiry)
# 📋 HTTP Headers (security analysis)
# 🏗️ Tech Stack (25+ signatures)
# 📧 Emails from /contact, /about, /team
# 🔗 Social links
# 📸 Full-page screenshot
# 🛡️ Security Score: /100
# 📄 Report → ./reports/<domain>-recon.md

Web Scraping

Puppeteer-based stealth browser that removes all bot detection fingerprints.

bash
joker > scrape https://example.com
joker > search best programming languages 2025
joker > Extract all links from https://github.com/trending
EvasionDescription
navigator.webdriverRemoved — no automation trace
chrome.runtimeFaked Chrome runtime properties
navigator.pluginsFaked plugin array
WebGL vendor/rendererRealistic GPU spoofing
User-AgentConsistent modern browser UA

TUI Dashboard

A full-screen interactive terminal dashboard built with blessed.

bash
joker > tui   # aliases: dashboard, ui
KeyAction
TabCycle through panes
qQuit dashboard
cClear output
i / EnterFocus input
EscBack / unfocus

Built-in Commands

CommandAliasesDescription
helpShow all commands with examples
clearclsClear terminal
exitquit, qExit The Joker
historyShow command history
bannerShow welcome banner
vibebuild, create-appBuild app from natural language
vibe-stopstop-devStop dev server
reconscan, osint, investigateOSINT recon on domain
tuidashboard, uiToggle TUI dashboard
airllmair, 70bSwitch to AirLLM backend
airllm-stopair-stopRevert to LM Studio
airllm-statusair-statusShow AirLLM sidecar status
memorymemShow agent memory stats
agent-statusShow agent state
reset-agentReset agent state

Testing

bash
npm test                                   # Run all tests
npm run test:coverage                      # With coverage report
npm run test:watch                         # Watch mode
npm test -- --testPathPatterns="parser"    # Single suite
SuiteTestsStatus
Agent System120+✅ Passing
LLM Integration80+✅ Passing
Web Scraper90+✅ Passing
Tools100+✅ Passing
CLI80+✅ Passing
Error Handling70+✅ Passing
Project Management100+✅ Passing
Utilities150+✅ Passing
Total980✅ All Passing

Security

DO NOT create public GitHub issues for security vulnerabilities. Report them privately to ratnakirtiscr@gmail.com.

See SECURITY.md for the full responsible disclosure policy.