Skip to content

M3kH/gigi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

300 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Gigi

πŸ€΅πŸ»β€β™‚οΈ Gigi

The control plane for autonomous AI development.
Not assisted. Autonomous.

Quickstart Β· Why Gigi Β· Features Β· Architecture Β· Configuration Β· Security Β· License

Gigi Introduction Video
▢️ Watch the introduction video


Caution

Gigi has full shell access and pre-authenticated Gitea. Never expose Gigi to the public internet. Bind to localhost or a private network only. See Security for details.

Note

Gigi is in pre-alpha. It's battle-tested (Gigi's own code is developed with Gigi), but not perfect yet. We're looking for volunteers willing to take it for a spin. See Security for deployment guidelines.

The Problem

IDEs and CLIs were designed for humans β€” a person typing code, reading diffs, clicking buttons. When AI entered the picture, we bolted copilots onto these human-centric tools and called it "AI-assisted development."

But autonomous development is a different game. When an AI agent works independently β€” reading issues, writing code, creating PRs, verifying its own output β€” it doesn't need syntax highlighting or keybindings. It needs task tracking, completion enforcement, real-time visibility, and budget control.

Running autonomous agents through a terminal is like managing a factory floor through a typewriter. You can make it work, but you're burning tokens, losing context, and flying blind.

Why Gigi

Gigi is the control plane for autonomous AI development. Instead of watching an agent scroll through a terminal, you get:

  • A Kanban board that updates in real-time as the agent moves through tasks
  • Task enforcement that prevents the agent from stopping mid-work β€” enforced by code, not prompts
  • Conversations linked to issues β€” every webhook, every PR, every comment routed to the right thread
  • A shared browser the agent uses to debug live websites, inspect the DOM, read console errors, run scripts, and trigger events β€” powered by Google Chrome DevTools Protocol (MCP)
  • Token and cost tracking so you know exactly what you're spending
  • Always with you β€” Telegram integration means your agent is reachable from anywhere, on any device
  • Self-extension β€” the agent evolves its own capabilities through PRs to its own repo

Self-hosted. Open source. Your hardware, your data, your agent.

Features

Kanban-Driven Development

Gigi integrates with Gitea project boards. Issues flow through columns β€” Ready β†’ In Progress β†’ Review β†’ Done β€” and the agent updates status labels automatically as it works. The board updates in real-time via WebSocket.

No more "did the agent finish?" Just look at the board.

Task Completion Enforcement

The biggest problem with autonomous agents: they stop mid-task. They write code but don't push. They push but don't create a PR. They create a PR but don't notify you.

Gigi solves this with a state machine enforcer that tracks every task through a completion loop:

Code Changed? β†’ Branch Pushed? β†’ PR Created? β†’ Notification Sent? β†’ βœ… Done

At each step, if the agent stalls, the enforcer injects a continuation prompt automatically. The agent cannot go idle with unfinished work. This is enforced by code, not by system prompt suggestions.

Conversation-Driven Workflow

Every issue and PR gets its own persistent conversation. Gitea webhooks automatically route events to the right thread:

Event What Happens
Issue opened Conversation created, agent has full context
PR merged Conversation updated, linked issues closed
@gigi in a comment Agent responds in the linked conversation
Push event Commit summary attached to repo conversation
Pipeline failure Agent notified, can auto-investigate

You chat with the agent about a specific issue, and all context β€” code changes, reviews, deployments β€” stays linked in one place.

Live Browser Debugging

Gigi runs a persistent Chrome instance with full DevTools Protocol access via the Chrome DevTools MCP. The agent can:

  • Navigate pages and inspect the live DOM
  • Read console.error and other console output in real-time
  • Execute JavaScript in the page context β€” trigger events, extract data, manipulate state
  • Take screenshots and DOM snapshots for visual verification
  • Monitor network requests β€” inspect headers, payloads, and response bodies
  • Click, fill forms, and interact with page elements programmatically

The agent debugs live websites β€” including its own UI. You watch it happen in the Browser tab. This isn't a simulated environment; it's a real Chrome instance the agent controls through the same protocol your browser DevTools use.

Token & Cost Tracking

Every message tracks input/output tokens and estimated cost. Per-conversation and aggregate views show exactly where your budget is going. No surprise bills from runaway agent loops.

Always With You β€” Telegram Integration

Gigi isn't trapped in a browser tab. With Telegram integration, your agent is always running, always reachable:

  • Get notified when tasks complete, PRs are created, or issues need attention
  • Send instructions to your agent from your phone, on the train, from bed β€” anywhere
  • Full two-way chat β€” same agent, same context, different channel
  • Cross-channel routing β€” start a conversation on the web, continue it on Telegram

Your autonomous development pipeline doesn't stop when you close your laptop.

Self-Extension

Gigi's source code lives in a Gitea repo that the agent itself can modify:

  1. Identifies a missing capability or bug
  2. Clones its own repo, creates a feature branch
  3. Implements the change
  4. Creates a PR for you to review
  5. Notifies you via Telegram or Web UI

After you merge, CI/CD deploys the update automatically. The agent evolves itself β€” new tools, prompt improvements, UI features, bug fixes.

Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Gigi Instance                                           β”‚
β”‚                                                          β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚  Gigi      β”‚   β”‚  Gitea   β”‚   β”‚  PostgreSQL        β”‚ β”‚
β”‚  β”‚  Agent     β”‚   β”‚  (forge) β”‚   β”‚  (state + history) β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚        β”‚                                                 β”‚
β”‚        β”œβ”€β”€ Claude Agent SDK (session persistence)        β”‚
β”‚        β”œβ”€β”€ MCP tools (gitea, telegram, browser, ask)     β”‚
β”‚        β”œβ”€β”€ Task enforcer (state machine)                 β”‚
β”‚        β”œβ”€β”€ Webhook router (events β†’ conversations)       β”‚
β”‚        β”‚                                                 β”‚
β”‚        β”œβ”€β”€β–Ί Chrome (DevTools Protocol via MCP)            β”‚
β”‚        β”‚    ↕ Live browser visible in UI                  β”‚
β”‚        β”‚                                                 β”‚
β”‚        └──► Svelte 5 Web UI                              β”‚
β”‚             β”œβ”€β”€ Kanban board (real-time)                  β”‚
β”‚             β”œβ”€β”€ Chat (conversations + tool output)        β”‚
β”‚             β”œβ”€β”€ Gitea views (issues, PRs, code)           β”‚
β”‚             └── Browser tab (live Chrome stream)          β”‚
β”‚                                                          β”‚
β”‚        ◄──► Telegram (two-way, always reachable)         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

UI Layout

+-----------------------------------------------------------+
| A: Kanban Board (full / compact / hidden)                 |
+----------+------------------------------------------------+
| B: Chat  | C: Filters / View Tabs                        |
| Sidebar  +------------------------------------------------+
|          | D: Main View (Overview / Gitea / Browser)      |
|          |                                                |
|          |  +------------------------------------------+  |
|          |  | F: Chat Overlay (expand / compact / hide) |  |
+----------+--+------------------------------------------+--+

Tech Stack

Component Technology
Runtime Node.js 22 (TypeScript, strict mode)
HTTP Hono
Agent Claude Agent SDK + MCP
Frontend Svelte 5 + Vite
Validation Zod
Database PostgreSQL
Browser Chrome + DevTools Protocol MCP
Messaging grammY (Telegram)
Container All-In-One (AIO) β€” Gigi + Gitea + Chrome + noVNC
Deployment Docker Swarm, Gitea Actions CI/CD

Project Structure

lib/
β”œβ”€β”€ core/           # Agent loop, router, store, events, enforcer
β”œβ”€β”€ api/            # HTTP routes (Hono), webhooks, Telegram, Gitea proxy
β”œβ”€β”€ api-gitea/      # Typed Gitea API client
β”œβ”€β”€ domain/         # Business logic (issues, projects, setup wizard)
β”œβ”€β”€ tools/          # MCP tool servers (gitea, telegram, ask-user, browser)
└── backup/         # Repository backup & mirror system

web/app/
β”œβ”€β”€ components/     # Svelte 5 UI (AppShell, Kanban, chat, panels)
β”œβ”€β”€ lib/stores/     # Reactive state (chat, panels, navigation, kanban)
β”œβ”€β”€ lib/services/   # WebSocket client, API layer
└── lib/utils/      # Markdown, formatting, link handling

src/
β”œβ”€β”€ index.ts        # Server bootstrap: HTTP + WS + Telegram + enforcer
└── server.ts       # WebSocket server management

Quickstart

Docker Compose (recommended)

Gigi uses an All-In-One (AIO) image that bundles the agent, Gitea, Chrome, and noVNC into a single container. You only need PostgreSQL alongside it.

git clone https://github.com/user/gigi.git
cd gigi
cp .env.example .env
# Edit .env β€” set DATABASE_URL
docker compose up -d

Open http://localhost:3100 β€” the setup wizard walks you through connecting your Anthropic API key and (optionally) Telegram.

Important

Keep Gigi bound to localhost or a private network. See Security before exposing it to any external network.

What runs inside the AIO container:

Component Description
Gigi Agent AI agent + real-time web UI
Gitea Git forge β€” repos, issues, PRs, project boards
Chrome Headless browser with DevTools Protocol for automation
noVNC Browser viewer β€” watch the agent interact with pages

You need a PostgreSQL instance (external or in the same compose). See Configuration for details.

Local Development

./dev.sh          # Start AIO infra + dev servers with HMR
./dev.sh --fresh  # Wipe state and start fresh (shows onboarding)

Configuration

Configuration is stored in PostgreSQL and managed via the web UI setup wizard at /setup.

Required Services

Service Purpose
PostgreSQL Conversations, messages, config, task state
Anthropic API Claude models for the agent

Gitea and Chrome are bundled inside the AIO container β€” no separate setup needed.

Optional Services

Service Purpose
Telegram Bot Mobile notifications and two-way chat from anywhere
Backup Gitea Repository mirroring to secondary instance

Environment Variables

Variable Description Default
DATABASE_URL PostgreSQL connection string required
PORT HTTP server port 3000
ADMIN_USER Gitea admin username (created on first boot) admin
ADMIN_PASSWORD Gitea admin password admin
ORG_NAME Gitea organization name idea
GIGI_INSTANCE_URL External URL for Gitea redirect config http://localhost:3000
GITEA_URL Use an external Gitea instead of internal β€”
CHROME_CDP_URL Use an external Chrome instead of internal β€”
TELEGRAM_BOT_TOKEN Telegram bot token for mobile access β€”

MCP Tools

The agent operates through these tool servers:

Tool Capabilities
gitea Create repos, manage issues/PRs, update labels, post comments
ask_user Ask the operator a question via web UI (blocks until answered)
telegram_send Send Markdown-formatted notifications to Telegram
Chrome DevTools Navigate, screenshot, evaluate JS, click, fill, inspect network, read console

How It Compares

IDE / CLI AI Assistants Gigi
Designed for Human-assisted coding Autonomous agent operations
Visibility Terminal scroll Kanban + live browser + linked chats
Task completion Hope the agent finishes State machine enforcement
Context Lost between sessions Persistent, linked to issues/PRs
Cost awareness Check your bill later Real-time token tracking
Browser debugging You open DevTools manually Agent runs Chrome DevTools autonomously
Availability Only when your IDE is open Always on β€” web + Telegram
Self-improvement You update the config Agent PRs its own repo
Hosting Cloud vendor Self-hosted, your hardware

CI/CD

Automated via Gitea Actions (.gitea/workflows/build.yml):

  1. Build Docker images (ARM64 + AMD64)
  2. Push to Gitea container registry
  3. Deploy stack via docker stack deploy
  4. Update reverse proxy config

Security

Gigi is designed for trusted, private environments. It trades sandboxing for autonomy β€” which is the point β€” but this means you must secure the perimeter yourself.

What you should know

Risk Detail
Unrestricted shell The agent runs with dangerouslySkipPermissions so it can execute any command without confirmation prompts. This is required for autonomous operation but means a misconfigured prompt or malicious input could cause damage.
Pre-authenticated Gitea The Gitea proxy injects X-WEBAUTH-USER automatically. There is no login screen β€” anyone who can reach the UI has full access to all repositories.
Credentials in database API tokens for Anthropic, Gitea, and Telegram are stored in PostgreSQL. Protect your database connection and backups accordingly.
Browser automation The agent controls a real Chrome instance. It can navigate to any URL, execute JavaScript, and interact with pages β€” including authenticated sessions if cookies are present.

Recommendations

  • Bind to localhost or a private network interface β€” never 0.0.0.0 on a public-facing machine.
  • Use a VPN or SSH tunnel if you need remote access.
  • Run in Docker with appropriate network isolation (the default docker compose setup does this).
  • Restrict database access β€” don't expose PostgreSQL to the network.
  • Review agent activity β€” check the conversation history and Gitea audit logs periodically.
  • Set a cost budget β€” use Gigi's built-in token tracking to cap spending and prevent runaway loops.

Reporting vulnerabilities

If you discover a security issue, please open a private issue or contact the maintainers directly rather than posting publicly.

License

AGPL-3.0

About

Gigi, your autonomous development environment for your AI

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors