Changelog

All notable changes to Gigaclaw are documented here. Follows semantic versioning. Latest release: v1.4.0

v1.4.2

Latest2026-03-21

Prerequisite assistant: both install.sh and install.ps1 now detect missing Ollama, ngrok, Git, and Docker before scaffolding begins. Each missing tool shows exact install commands for your platform. Ollama and Node.js checks include retry loops — install in another terminal and press Enter to continue without re-running the script. Gigaclaw branding applied to both installer banners. Regression suite expanded to 41 tests.

  • featinstall.sh: Added Ollama check with platform-specific install instructions (brew install ollama / curl -fsSL https://ollama.com/install.sh | sh). Retry loop (3 attempts) when Ollama is installed but server is not running. Suggests ollama pull llama3, qwen2.5:3b, and mistral as starter models.
  • featinstall.ps1: Added Ollama check with winget install Ollama.Ollama and official download URL. Retry loop (3 attempts) when Ollama is installed but server is not running. Extracted PATH augmentation into reusable Invoke-PathAugmentation function called after each install retry.
  • featBoth installers: Added ngrok check with install instructions for Cloud Mode users (brew install ngrok/ngrok/ngrok on macOS, winget install ngrok.ngrok on Windows). Improved Git check with full platform-specific options. Improved Docker check with official convenience script URL.
  • fixBranding: Both installer banners updated from 'Giga Bot' to 'Gigaclaw'. All output messages and post-install instructions updated. Added Useful commands section to post-install output (ollama pull, ollama serve, npm run setup).
  • featRegression suite expanded 35 → 41 tests. Tests 36-41: install.sh Ollama check, install.sh Ollama retry loop, install.sh ngrok mention, install.ps1 Ollama check, install.ps1 Ollama retry loop, both installers Gigaclaw branding. 41/41 pass.

v1.4.0

Stable2026-03-21

Major release: Gigabot is now Gigaclaw. All package names, env vars, CLI commands, and documentation updated. New chat history export feature — export any conversation as JSON, Markdown, or plain text directly from the chat header. Bulk export all chats as a ZIP. DropdownMenuSub components added to the shared UI library. All compiled .js files regenerated. Regression suite expanded to 35 tests.

  • featBREAKING: Package renamed gigabot → gigaclaw. Use npx gigaclaw@latest init. Env vars: GIGACLAW_DIR, GIGACLAW_SKIP_SETUP=1. API route: [...gigaclaw]. 78 files updated, 0 stale references remaining.
  • featChat history export: exportChat(chatId, format) and exportAllChats(format) server actions. Supports JSON (full structured), Markdown (timestamped transcript), and plain text. Single chat: chat header ⋯ dropdown → Export submenu. Bulk: Chats page toolbar → Export All (downloads ZIP with one file per chat).
  • featDropdownMenuSub, DropdownMenuSubTrigger, DropdownMenuSubContent added to lib/chat/components/ui/dropdown-menu. SubContext isolates open state per submenu. Chevron indicator on SubTrigger. Compiled .js regenerated.
  • docsAll compiled lib/chat/components/ui/*.js files regenerated via npm run build. Regression suite expanded 30 → 35 tests: rename integrity, export actions, ExportIcon, DropdownMenuSub, and chat-header Export submenu. 35/35 pass locally.

v1.3.0

Stable2026-03-10

Critical Windows fix: the app was showing a blank white page with SyntaxError: Unexpected token '<' on every load. Root cause was the CI pipeline never running npm run build before npm publish, so compiled lib/chat/components/ui/*.js files were absent from the npm tarball. Next.js/Turbopack received a 404 HTML response when importing them, causing the crash. Also adds a branded GigaClaw favicon to all scaffolded projects, eliminating the 404 console noise on every page load. Regression suite expanded to 30 tests.

  • fix#4 Critical (Windows): Added explicit 'npm run build' step to CI publish-staging job before npm publish. Compiled lib/chat/components/ui/*.js files are now always present in the npm tarball regardless of prepublishOnly behaviour. Eliminates the SyntaxError: Unexpected token '<' blank page crash on Windows (and any platform where the compiled files were absent).
  • fix#6: Added branded GigaClaw favicon.ico (16x32 ICO, black background, green G) to templates/public/. Every newly scaffolded project now includes a favicon, eliminating the GET /favicon.ico 404 console error that appeared on every page load.
  • feattest-tty-regression.mjs: expanded from 28 to 30 tests. Test 29: CI workflow has explicit npm run build before npm publish. Test 30: templates/public/favicon.ico exists and is a valid ICO file (>50 bytes). 30/30 pass locally, 28/28 on CI.

v1.2.9

Stable2026-03-10

Three GitHub issues resolved in one release: nested <button> hydration crash (#2, #3), remaining asChild DOM leak (#1), CI async test runner unblocked, and GIGACLAW_SKIP_SETUP=1 bypass added for CI/CD pipelines. The Publish to npm pipeline had been failing on every run since v1.2.4 — root cause was the test runner silently discarding Promises from async test functions. All issues are now closed.

  • fix#2 #3: DropdownMenuTrigger now uses a Slot pattern. Default path renders <span role=button> instead of <button>, preventing <button><button> nesting that caused React hydration errors on every chat page load. When asChild=true (or when the child is already a button/a), the child element is cloned directly with merged onClick and aria-expanded — no wrapper element at all.
  • fix#1: All DropdownMenuTrigger callers (chat-header.jsx + compiled .js) updated to use asChild=true so the child <button> IS the trigger. Eliminates the remaining React 'asChild prop on DOM element' warning that persisted after v1.2.8 because the npm package was still on v1.2.4 (CI had been blocked).
  • fixCI async test runner: test() function rewritten to queue tests and run them via async runAll(). Test 8 (@clack/prompts dynamic import) was an async function whose returned Promise was silently discarded by the synchronous try/catch — always 'passing' locally but causing unpredictable failures on cold CI runners. This was the root cause of every CI failure since v1.2.4.
  • featGIGACLAW_SKIP_SETUP=1 env-var bypass added to both install.sh and install.ps1. Set this variable before running the installer to skip the interactive setup wizard — useful in CI/CD pipelines, Dockerfile builds, and automated provisioning scripts.
  • feattest-tty-regression.mjs: expanded from 24 to 28 tests. Test 25: DropdownMenuTrigger default path uses span not button. Test 26: compiled dropdown-menu.js has Slot pattern. Test 27: install.sh GIGACLAW_SKIP_SETUP bypass. Test 28: install.ps1 GIGACLAW_SKIP_SETUP bypass. 28/28 pass locally, 26/26 on CI.

v1.2.8

Stable2026-03-09

React console error eliminated and Next.js 15 compatibility restored. Two bugs reported by a user running GigaClaw locally with Ollama and PragatiGPT: (1) the DropdownMenuItem component leaked the asChild prop onto a DOM element, triggering a React warning on every render of the sidebar and chat menus; (2) both dynamic route pages used await params which is incorrect in Next.js 15 where params is synchronous. Both fixed, filed as GitHub issues, and covered by 4 new regression tests.

  • fixlib/chat/components/ui/dropdown-menu.jsx + .js: DropdownMenuItem now explicitly destructures asChild from props and implements a minimal Slot pattern. When asChild=true the child element (e.g. <a href>) is cloned with merged className, onClick, and role='menuitem' — no wrapper <div> is rendered and asChild is never forwarded to any DOM element. Eliminates the React warning that fired on every render of the sidebar user nav and chats page dropdowns.
  • fixtemplates/app/chat/[chatId]/page.js: const { chatId } = await params changed to const { chatId } = params. In Next.js 15 dynamic route params are synchronous objects, not Promises. The await was a no-op but triggered TypeScript warnings and could cause runtime errors in strict configurations.
  • fixtemplates/app/code/[codeWorkspaceId]/page.js: same await params fix applied. const { codeWorkspaceId } = await params → const { codeWorkspaceId } = params.
  • feattest-tty-regression.mjs: expanded from 20 to 24 tests. Test 21: DropdownMenuItem.jsx destructures asChild. Test 22: compiled .js also destructures asChild (jsx/js sync check). Test 23: chat route page has no await params. Test 24: code route page has no await params. 24/24 pass locally, 22/22 on CI.

v1.2.7

Stable2026-03-09

Critical installer fixes. End-to-end audit found 4 bugs that made curl|bash installs hang silently and blocked every npm publish since v1.2.4. All 4 are now fixed, filed as GitHub issues, and covered by new regression tests. The CI gate is unblocked and v1.2.7 is the first version to successfully publish to npm.

  • fixinstall.sh + install.ps1: added --yes to npx call (npx --yes gigaclaw@latest init). The missing flag caused npm to prompt 'Ok to proceed? (y)' which hung silently when stdin was a pipe (curl|bash). Every user who tried the one-liner install got a silent hang.
  • fixinstall.sh + install.ps1: added npm install step between scaffold and setup wizard. Without it, npm run setup failed immediately with 'Cannot find module gigaclaw' because node_modules did not exist in the freshly scaffolded project.
  • fixbin/cli.js: gigaclawDep changed from hardcoded '^1.0.0' to '^' + currentVersion. Scaffolded projects now pin to the current CLI version as the minimum, not the oldest published release (1.0.0).
  • fixtest-tty-regression.mjs: Tests 7 and 9 now skip on headless CI runners (GitHub Actions, Docker without TTY). Added IS_CI detection via CI/GITHUB_ACTIONS/JENKINS_URL/TRAVIS/CIRCLECI env vars. These tests caused 2/17 failures on every CI run since v1.2.4, blocking all npm publishes.
  • feattest-tty-regression.mjs: expanded from 17 to 20 tests. Test 18: npx --yes present in install.sh. Test 19: npm install runs before npm run setup. Test 20: gigaclawDep uses current version. 20/20 pass locally, 18/18 on CI (2 skipped).

v1.2.6

Stable2026-03-09

Native Windows onboarding. install.ps1 fully rewritten as a production-grade installer that mirrors install.sh feature-for-feature: execution policy self-bypass for irm|iex users, PATH augmentation for all major Windows Node.js managers (nvm-windows, fnm, Scoop, Chocolatey, Volta, MSI), auto-launch of the setup wizard, and graceful error handling. Regression suite expanded to 17 tests with 4 new PowerShell-specific checks.

  • featinstall.ps1: Set-ExecutionPolicy Bypass -Scope Process added as first statement. Allows irm|iex one-liner to work on machines with Restricted or AllSigned policy without any permanent policy change.
  • featinstall.ps1: PATH augmented for all common Windows Node.js install locations — Node.js MSI (C:\Program Files\nodejs), nvm-windows (%APPDATA%\nvm + all version subdirectories), fnm (%LOCALAPPDATA%\fnm\aliases\default\bin), Volta (%LOCALAPPDATA%\Volta\bin), Scoop (%USERPROFILE%\scoop\shims), Chocolatey (C:\ProgramData\chocolatey\bin), and winget/Microsoft Store (%LOCALAPPDATA%\Microsoft\WindowsApps).
  • featinstall.ps1: auto-launches npm run setup immediately after scaffolding — zero manual steps required. Mirrors install.sh behaviour exactly. Graceful error handling: if setup fails, prints a re-run instruction instead of crashing the installer.
  • featinstall.ps1: Git and Docker optional-dependency checks with Windows-specific install hints (winget install Git.Git, Docker Desktop link). Supports $env:GIGACLAW_DIR for custom project directory names.
  • feattest-tty-regression.mjs: expanded from 13 to 17 tests. Test 14: install.ps1 exists. Test 15: execution policy self-bypass present. Test 16: PATH augmented for nvm-windows/fnm/Scoop/Chocolatey/Volta. Test 17: npm run setup auto-launched. All 17/17 pass.

v1.2.5

Stable2026-03-09

CI-gated releases. A 13-test regression suite now runs as Job 0 in the GitHub Actions pipeline, blocking every npm publish if any test fails. Also fixes a missed shell:true on the git diff call in bin/cli.js — caught by the new Test 12. No broken packages can reach users.

  • featpublish-npm.yml: added regression-tests as Job 0. All downstream jobs (publish-staging, build-containers, promote, release-notes, github-release, update-changelog) depend on it via needs: [regression-tests]. A single test failure aborts the entire pipeline before any package is published.
  • featscripts/test-tty-regression.mjs: expanded from 10 to 13 tests. New Test 11 verifies AUTH_SECRET uses base64url (no +/= chars). New Test 12 checks all execSync calls use shell:true for Windows .cmd shim compatibility. New Test 13 confirms install.sh sources Homebrew/nvm/asdf PATH blocks for macOS/Linux.
  • fixbin/cli.js: git diff --no-index call in the diff command was missing shell:true. On Windows this caused ENOENT when git is installed via Git for Windows (a .cmd shim). Caught and fixed by Test 12 of the new regression suite.
  • featCI: on regression test failure, artifacts (test script + all setup files + install.sh) are uploaded for 14-day retention to aid debugging without re-running the pipeline.

v1.2.4

Stable2026-03-05

Cross-platform QA release. Three bugs fixed: Mac/Linux install failure (Node.js not found via curl|bash due to missing Homebrew/nvm PATH), Windows login 'unexpected syntax' error (AUTH_SECRET base64 special chars corrupting dotenv), and Windows npm/git command failures (missing shell:true on execSync calls). 12/12 regression tests pass.

  • fixinstall.sh: sources Homebrew (/opt/homebrew/bin), nvm (~/.nvm/nvm.sh), and asdf (~/.asdf/asdf.sh) before Node.js check. Fixes curl|bash install failure on macOS (Apple Silicon + Intel) and Linux where Node.js is installed via a version manager rather than a system package.
  • fixinstall.sh: improved Node.js missing error — now shows platform-specific install instructions (brew install node, nvm one-liner, nodejs.org link) instead of a bare 'command not found' message.
  • fixbin/cli.js: AUTH_SECRET generation switched from base64 to base64url (RFC 4648 §5). Standard base64 produces +, /, and = which dotenv misparses on Windows, silently corrupting the JWT signing key and causing NextAuth to return 'unexpected syntax' on login. base64url uses only A-Z a-z 0-9 - _ — safe in unquoted dotenv values on all platforms.
  • fixbin/cli.js: added shell:true to all 13 execSync calls that invoke npm, npx, git, and docker. On Windows these are .cmd shims that only resolve via the shell; without shell:true Node.js fails with ENOENT on npm install, npm run build, and git commands.
  • featRegression test suite expanded to 12 tests covering: syntax validation, base64url encoding (confirms no +/= chars), Homebrew/nvm/asdf PATH block presence, shell:true coverage across all external command calls, and all setup file syntax checks. Run with: npm run test:tty

v1.2.3

Stable2026-03-05

Critical fix: the setup wizard was exiting immediately after displaying the Cloud/Local mode selector when installed via curl | bash. Root cause: bash stdin is the curl pipe (EOF), so @clack/prompts received EOF as the first keypress event and called process.exit(0). Fixed with a two-layer defence — exec < /dev/tty in install.sh (same pattern as Homebrew/Rustup/nvm) plus a Node.js-level /dev/tty re-attachment guard in setup.mjs. 10-test regression suite added.

  • fixinstall.sh: added exec < /dev/tty guard before npm run setup is launched. When piped from curl, bash stdin is the pipe (EOF). exec < /dev/tty re-attaches the controlling terminal so all interactive @clack/prompts work correctly. Conditional: only fires when stdin is not a TTY and /dev/tty exists.
  • fixsetup.mjs: added Node.js-level TTY guard — detects process.stdin.isTTY === undefined and re-opens /dev/tty as a ReadStream, reassigning process.stdin. Covers cases where npm run setup is called directly without install.sh (e.g., manual invocation in a CI-like environment).
  • featscripts/test-tty-regression.mjs: new 10-test regression suite validating both TTY guard layers, syntax of all three setup files, /dev/tty accessibility, @clack/prompts import, and simulated non-TTY stdin condition. Run with: npm run test:tty
  • featpackage.json: added test:tty script pointing to the regression suite so CI pipelines can run it automatically.
  • docsCHANGELOG.md: v1.2.3 entry includes full root cause analysis with the exact failure chain from curl pipe to process.exit(0), both fix layers, and the regression test coverage.

v1.2.2

Stable2026-03-04

Documentation and metadata-only release. All mentions of the original upstream project and its contributor have been removed from every public-facing file. GigaClaw is an independent product built and maintained by Gignaati.

  • docsCHANGELOG.md: v1.1.5 section reworded — banner fix described as GigaClaw identity update, no legacy name references.
  • docsscripts/notes_v1.1.1.md: API route rename described without referencing the old directory name.
  • docsscripts/notes_v1.1.2.md: branding cleanup described as GigaClaw completion, not legacy replacement.
  • docsscripts/notes_v1.1.5.md: banner update described as GigaClaw identity; old ASCII art block removed.
  • docsFull grep audit confirmed zero references to the original upstream project or its contributor anywhere in source files, templates, setup wizards, bin, lib, README, or release scripts.

v1.2.1

Stable2026-03-04

Patch release fixing three onboarding friction points reported by a real user during their first install of v1.2.0 Local Mode. The install-to-running experience is now fully frictionless — one command, no manual steps.

  • fixinstall.sh: auto-cd into project directory and auto-launch npm run setup — users who ran npm run setup from the parent directory got 'npm error Missing script: setup'. The installer now handles the cd and wizard launch automatically.
  • fixdocker-compose.local.yml: replaced private gignaati/gigaclaw:event-handler-* image (requires docker login, does not exist publicly) with dockerfile_inline build from local source using node:20-alpine. No registry login required. First build ~2-3 min; subsequent starts instant.
  • fixsetup-local.mjs Step 5: replaced blind 'docker compose up -d' with an interactive start selector. Checks Docker availability first. Offers: npm run dev (recommended, no Docker), docker compose (only if Docker detected, uses --build flag), or Start later. Falls back gracefully with clear instructions.
  • docsinstall.sh now warns (not errors) if Docker is not installed — Docker is optional for Local Mode.
  • docsSummary panel in Local Mode wizard now shows both start options (npm run dev and docker compose) side-by-side for clarity.

v1.2.0

Stable2026-03-04

Local Mode — run GigaClaw 100% offline using Ollama for LLM inference. No GitHub, no ngrok, no Telegram required. The setup wizard now opens with a mode selector so users choose their deployment style upfront.

  • featMode selector in npm run setup — choose Cloud Mode (GitHub + ngrok + Telegram) or Local Mode (Ollama only, 100% offline) as the very first prompt.
  • featsetup-local.mjs — new dedicated local wizard with Ollama health check, retry loop, platform-specific install instructions, RAM detection, and automatic model recommendation (3B / 8B / 70B-Q4 / 70B based on available memory).
  • featRAM-based model recommendation: 8 GB → llama3.2:3b, 16 GB → llama3.1:8b, 32 GB → llama3.1:70b-q4_0, 64 GB+ → llama3.1:70b. Shows already-pulled models in a selector with custom-entry fallback.
  • featCaution banner in local wizard — clearly lists what is unavailable (Telegram, GitHub runners, ngrok) and what still works (web chat, cron jobs, Ollama inference, file uploads, Ntfy notifications, persistent history).
  • featdocker-compose.local.yml template — stripped-down compose file with GigaClaw on port 3000, Ollama via host.docker.internal, Linux host-gateway support, and optional Ntfy push notifications behind --profile notifications.
  • featMode-aware gigaclaw init — re-running npx gigaclaw init on a local-mode project (GIGACLAW_MODE=local in .env) skips scaffolding GitHub Actions workflow files.
  • featdocker-compose.local.yml added to MANAGED_PATHS — kept in sync on every npx gigaclaw upgrade.
  • docsCHANGELOG.md updated with full v1.2.0 feature narrative.

v1.1.5

Fix2026-03-04

Replaced the legacy ASCII art banner in the setup wizard with the correct GigaClaw slant-font banner and Gignaati tagline.

  • fixsetup/setup.mjs and setup/setup-telegram.mjs now display the GigaClaw slant-font ASCII banner with tagline 'India's Autonomous AI Agent · Powered by Gignaati'.

v1.1.4

Fix2026-03-03

Permanent fix for the Next.js / Turbopack middleware build error — closes the upgrade-path gap that left existing installs broken even after v1.1.3.

  • fixAdd middleware.js to MANAGED_PATHS — npx gigaclaw init and npx gigaclaw upgrade now always overwrite middleware.js with the correct template (inline static config export). Users on any prior version who run upgrade will receive the fix automatically.
  • fixRemove config export from lib/auth/middleware.js entirely. Even if a user manually writes export { config } from 'gigaclaw/middleware', there is nothing to re-export — the failure mode is structurally impossible.
  • docsAdded detailed comment in lib/auth/middleware.js explaining why config must be a static literal in the project root and pointing to the correct template pattern.

v1.1.3

Fix2026-03-03

Resolved the Next.js Turbopack static analysis error that prevented builds when middleware.js re-exported config from the gigaclaw package.

  • fixRewrote templates/middleware.js to export config as a static inline literal object instead of re-exporting it from gigaclaw/middleware. Next.js / Turbopack requires the config export to be defined directly in the project's middleware.js file.
  • docsAdded detailed JSDoc comment in templates/middleware.js explaining the static analysis constraint and why the config must not be imported from a module.

v1.1.2

Fix2026-03-03

Branding cleanup, support URL correction, and Swarm page SSR hydration fix.

  • fixCompleted GigaClaw branding across all compiled components including app-sidebar.js — all legacy identifiers replaced with GigaClaw.
  • fixCorrected support URL from www.www.gignaati.com to https://gigaclaw.gignaati.com in app-sidebar.jsx and compiled output.
  • fixFixed Swarm page React hydration error caused by reading localStorage during SSR. Replaced direct access with an SSR-safe useEffect pattern.

v1.1.1

Fix2026-03-03

CLI improvements and branding corrections.

  • featAdded --version / -v flag to the CLI (gigaclaw --version prints current package version).
  • fixUpdated CLAUDE.md.template with Gignaati branding header.
  • fixAdded --version to printUsage help text.
  • fixCorrected API route directory name to [gigaclaw] for consistency with package identity.

v1.1.0

Major2026-03-03

Multi-LLM routing, India-first AI (PragatiGPT), local inference (Ollama), full Gignaati branding, and one-line cross-platform installers.

  • featAdded PragatiGPT provider — India-first Small Language Model optimised for edge and on-device deployment.
  • featAdded Ollama provider for fully local AI inference with zero cloud dependency.
  • featAdded Custom endpoint provider for any OpenAI-compatible API.
  • featAdded validateProviderConfig() utility for runtime provider validation with actionable error messages.
  • featAdded getProviderLabel() utility for human-readable provider display names.
  • featFull Gignaati branding applied across all templates, components, and documentation.
  • featProduction-grade README with feature comparison tables, LLM provider guide, and deployment walkthrough.
  • featAdded install.sh (Linux/macOS) and install.ps1 (Windows) one-line cross-platform installers.
  • featUpdated .env.example with all 6 LLM providers, fully documented with inline comments.
  • featUpdated SOUL.md with Gignaati-branded agent persona.
  • fixUpdated CODEOWNERS to Gignaati organisation.
  • fixRenamed .claude/commands/support.md to gigaclaw-support.md.
  • fixReplaced all legacy VERSION env references with GIGACLAW_VERSION.
  • fixRenamed legacy config wrapper to withGigaclaw() across all config files.

v1.0.0

Initial2026-03-03

Initial public release of Gigaclaw — a fully rebranded, production-ready AI agent platform built on the Gignaati stack.

  • featInitial public release of Gigaclaw — India's autonomous AI agent platform, built and maintained by Gignaati.
  • featFull Next.js 15 + React 19 web UI with streaming chat interface.
  • featGitHub Actions-native agent runner — no separate server required.
  • featInteractive setup wizard (npm run setup) for API keys, GitHub secrets, and Telegram.
  • featSupport for Anthropic Claude, OpenAI GPT-4, and Google Gemini.
  • featCron scheduler and webhook trigger support with three action types (Agent, Command, Webhook).
  • featTelegram bot integration for mobile notifications and remote control.
  • featDocker + Traefik production deployment stack with automatic HTTPS via Let's Encrypt.
  • featMIT License — open source, zero vendor lock-in.

v1.2.x

NPM ReleaseFebruary 2026

gigaclaw is now an installable NPM package. Instead of forking a repo and wiring everything together yourself, you run one command and get a fully configured AI agent project.

Install in seconds

Run npx gigaclaw init and you have a working project. The interactive setup wizard walks you through API keys, GitHub secrets, and Telegram configuration — no more copying .env.example files and hunting for documentation.

Web chat interface

Your agent now has a full web app. Chat with streaming responses, browse conversation history grouped by date, and pick up where you left off. Upload images, PDFs, and code files directly in the chat.

Choose your LLM

Switch between Anthropic, OpenAI, and Google models by changing two environment variables (LLM_PROVIDER and LLM_MODEL). No code changes needed.

Real-time Swarm view

The Swarm page shows every active and completed job in real time. See which tasks are running, cancel jobs that went sideways, and rerun completed ones.

In-app & Telegram notifications

Unread badges tell you when jobs finish. Telegram notifications give you the summary on your phone — what the agent did, what files changed, whether the PR merged.

Secure API key management

Keys are hashed with SHA-256 and verified with timing-safe comparison. Create, rotate, and revoke keys from the settings page.

Production deployment built in

docker compose up gives you Traefik with automatic HTTPS, PM2 process management, and a self-hosted GitHub Actions runner.

Auto-upgrades

A GitHub Actions workflow can open a PR to upgrade your project when a new version is published. Template files are updated automatically; your customisations in config/ are never touched.

Three automation types

Cron jobs and webhook triggers support Agent (full AI in Docker), Command (shell script), and Webhook (HTTP request) action types.

File uploads in chat

Drag and drop images, PDFs, and code files. Images are analysed with AI vision; PDFs and text files are included in conversation context.

Authentication out of the box

NextAuth v5 with JWT sessions protects the web interface. First visit creates an admin account — no separate setup step.

Persistent conversations

All chats stored in SQLite via Drizzle ORM. Browse history, resume old conversations, and search across past chats.

Multi-channel messaging

A channel adapter pattern normalises messages across platforms. Web chat and Telegram work today; the base class makes adding new channels straightforward.

Breaking Changes

  • Fork-and-modify workflow — replaced by npx gigaclaw init
  • Express server in event_handler/ — replaced by Next.js route handlers in the package
  • Single .env API key — replaced by database-backed key management
  • File-based JSON conversation history — replaced by SQLite database
  • Anthropic-only LLM support — replaced by multi-provider architecture
  • Manual deployment — replaced by Docker Compose with Traefik

Always on the latest version?

Run one command to upgrade any existing project.

npx gigaclaw@latest upgrade