craft-ai-agents/craft-agents-ossPublic

AI summary: An open-source framework for building autonomous, goal-oriented AI agents.

Stars
7.2K
+4 today
Forks
1.1K
Watchers
43
Open issues
362
Open PRs
165
Contributors
~7
Commits
107
Branches
3

TypeScriptApache-2.0Created Jan 19, 2026Last push 4d agoLatest release v0.13.5+18 stars this week+74 this month

Quick answers

What is craft-agents-oss?
An open-source framework for building autonomous, goal-oriented AI agents.
What does craft-agents-oss do?
This project provides a robust, extensible framework for developing autonomous AI agents capable of complex reasoning and tool usage. It implements sophisticated cognitive architectures that allow agents to break down high-level goals, plan sequences of actions, and adapt to changing environments. The framework handles the intricate orchestration of LLM calls, memory persistence, and secure execution of external tools. By providing a standardized interface for agent creation, it lowers the barrier to entry for developers looking to integrate autonomous capabilities into their systems, ensuring reliability and observability throughout the agent's lifecycle.
Who is craft-agents-oss for?
Aimed at AI developers and software engineers looking to build robust autonomous systems. Familiarity with LLM architectures and API integration is required.
How do I get started with craft-agents-oss?
pip install craft-agents-oss && python -m craft_agents init
How popular is craft-agents-oss on GitHub?
craft-ai-agents/craft-agents-oss has 7,223 stars and 1,081 forks on GitHub, and gained 18 stars in the last 7 days.
What license does craft-agents-oss use?
craft-ai-agents/craft-agents-oss is released under the Apache-2.0 license.

Star history

since Jul 29, 2026
02K4K6KJul 2026Aug 2026Sep 2026Oct 2026
7.2K stars as of Oct 4, 2026. Measured daily since Jul 29, 2026; GitHub no longer exposes earlier star timestamps.

Update history

1 recorded
  • Oct 4, 2026Previously tracked as lukilabs/craft-agents-oss; its 1 daily snapshot and 1 trending appearance were merged into this profile. Stars: 6,972 on 2026-07-29 under the old name, 7,219 on 2026-10-02 (+247).

Contribution activity

commits per day, last 52 weeks
SepOctNovDecJanFebMarAprMayJunJulAugSepMonWedFri2025-09-27: 0 commits2025-09-28: 0 commits2025-09-29: 0 commits2025-09-30: 0 commits2025-10-01: 0 commits2025-10-02: 0 commits2025-10-03: 0 commits2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 0 commits2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 0 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 6 commits2026-01-20: 2 commits2026-01-21: 8 commits2026-01-22: 1 commit2026-01-23: 3 commits2026-01-24: 1 commit2026-01-25: 1 commit2026-01-26: 5 commits2026-01-27: 2 commits2026-01-28: 1 commit2026-01-29: 0 commits2026-01-30: 1 commit2026-01-31: 1 commit2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 1 commit2026-02-04: 1 commit2026-02-05: 1 commit2026-02-06: 1 commit2026-02-07: 0 commits2026-02-08: 1 commit2026-02-09: 1 commit2026-02-10: 2 commits2026-02-11: 0 commits2026-02-12: 2 commits2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 2 commits2026-02-17: 1 commit2026-02-18: 0 commits2026-02-19: 0 commits2026-02-20: 0 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 1 commit2026-02-26: 0 commits2026-02-27: 1 commit2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 1 commit2026-03-03: 0 commits2026-03-04: 0 commits2026-03-05: 1 commit2026-03-06: 1 commit2026-03-07: 0 commits2026-03-08: 0 commits2026-03-09: 1 commit2026-03-10: 1 commit2026-03-11: 1 commit2026-03-12: 1 commit2026-03-13: 0 commits2026-03-14: 0 commits2026-03-15: 0 commits2026-03-16: 1 commit2026-03-17: 1 commit2026-03-18: 1 commit2026-03-19: 1 commit2026-03-20: 2 commits2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 1 commit2026-03-24: 0 commits2026-03-25: 1 commit2026-03-26: 3 commits2026-03-27: 0 commits2026-03-28: 0 commits2026-03-29: 0 commits2026-03-30: 1 commit2026-03-31: 1 commit2026-04-01: 0 commits2026-04-02: 1 commit2026-04-03: 0 commits2026-04-04: 0 commits2026-04-05: 0 commits2026-04-06: 0 commits2026-04-07: 0 commits2026-04-08: 1 commit2026-04-09: 1 commit2026-04-10: 0 commits2026-04-11: 1 commit2026-04-12: 0 commits2026-04-13: 0 commits2026-04-14: 1 commit2026-04-15: 0 commits2026-04-16: 2 commits2026-04-17: 0 commits2026-04-18: 0 commits2026-04-19: 0 commits2026-04-20: 0 commits2026-04-21: 1 commit2026-04-22: 1 commit2026-04-23: 0 commits2026-04-24: 1 commit2026-04-25: 0 commits2026-04-26: 0 commits2026-04-27: 0 commits2026-04-28: 0 commits2026-04-29: 1 commit2026-04-30: 1 commit2026-05-01: 0 commits2026-05-02: 0 commits2026-05-03: 0 commits2026-05-04: 0 commits2026-05-05: 1 commit2026-05-06: 1 commit2026-05-07: 0 commits2026-05-08: 0 commits2026-05-09: 0 commits2026-05-10: 0 commits2026-05-11: 1 commit2026-05-12: 0 commits2026-05-13: 0 commits2026-05-14: 0 commits2026-05-15: 1 commit2026-05-16: 0 commits2026-05-17: 0 commits2026-05-18: 0 commits2026-05-19: 1 commit2026-05-20: 0 commits2026-05-21: 0 commits2026-05-22: 0 commits2026-05-23: 0 commits2026-05-24: 0 commits2026-05-25: 1 commit2026-05-26: 1 commit2026-05-27: 0 commits2026-05-28: 0 commits2026-05-29: 0 commits2026-05-30: 0 commits2026-05-31: 0 commits2026-06-01: 0 commits2026-06-02: 1 commit2026-06-03: 0 commits2026-06-04: 0 commits2026-06-05: 0 commits2026-06-06: 0 commits2026-06-07: 0 commits2026-06-08: 0 commits2026-06-09: 2 commits2026-06-10: 0 commits2026-06-11: 0 commits2026-06-12: 0 commits2026-06-13: 0 commits2026-06-14: 0 commits2026-06-15: 0 commits2026-06-16: 0 commits2026-06-17: 0 commits2026-06-18: 0 commits2026-06-19: 0 commits2026-06-20: 0 commits2026-06-21: 0 commits2026-06-22: 0 commits2026-06-23: 0 commits2026-06-24: 1 commit2026-06-25: 0 commits2026-06-26: 0 commits2026-06-27: 0 commits2026-06-28: 0 commits2026-06-29: 0 commits2026-06-30: 0 commits2026-07-01: 1 commit2026-07-02: 0 commits2026-07-03: 0 commits2026-07-04: 0 commits2026-07-05: 0 commits2026-07-06: 0 commits2026-07-07: 1 commit2026-07-08: 0 commits2026-07-09: 0 commits2026-07-10: 1 commit2026-07-11: 0 commits2026-07-12: 0 commits2026-07-13: 0 commits2026-07-14: 0 commits2026-07-15: 0 commits2026-07-16: 0 commits2026-07-17: 0 commits2026-07-18: 0 commits2026-07-19: 0 commits2026-07-20: 0 commits2026-07-21: 0 commits2026-07-22: 1 commit2026-07-23: 0 commits2026-07-24: 0 commits2026-07-25: 0 commits2026-07-26: 0 commits2026-07-27: 0 commits2026-07-28: 0 commits2026-07-29: 0 commits2026-07-30: 0 commits2026-07-31: 0 commits2026-08-01: 0 commits2026-08-02: 0 commits2026-08-03: 1 commit2026-08-04: 0 commits2026-08-05: 0 commits2026-08-06: 1 commit2026-08-07: 0 commits2026-08-08: 0 commits2026-08-09: 0 commits2026-08-10: 0 commits2026-08-11: 0 commits2026-08-12: 0 commits2026-08-13: 0 commits2026-08-14: 0 commits2026-08-15: 0 commits2026-08-16: 0 commits2026-08-17: 1 commit2026-08-18: 0 commits2026-08-19: 0 commits2026-08-20: 0 commits2026-08-21: 0 commits2026-08-22: 0 commits2026-08-23: 0 commits2026-08-24: 0 commits2026-08-25: 0 commits2026-08-26: 0 commits2026-08-27: 1 commit2026-08-28: 0 commits2026-08-29: 0 commits2026-08-30: 0 commits2026-08-31: 0 commits2026-09-01: 1 commit2026-09-02: 1 commit2026-09-03: 0 commits2026-09-04: 0 commits2026-09-05: 0 commits2026-09-06: 0 commits2026-09-07: 1 commit2026-09-08: 0 commits2026-09-09: 0 commits2026-09-10: 0 commits2026-09-11: 0 commits2026-09-12: 0 commits2026-09-13: 0 commits2026-09-14: 0 commits2026-09-15: 0 commits2026-09-16: 0 commits2026-09-17: 0 commits2026-09-18: 0 commits2026-09-19: 0 commits2026-09-20: 1 commit2026-09-21: 0 commits2026-09-22: 0 commits2026-09-23: 1 commit2026-09-24: 0 commits2026-09-25: 0 commits2026-09-26: 0 commits
103 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Permissive license

    Apache-2.0

What craft-agents-oss does

This project provides a robust, extensible framework for developing autonomous AI agents capable of complex reasoning and tool usage. It implements sophisticated cognitive architectures that allow agents to break down high-level goals, plan sequences of actions, and adapt to changing environments. The framework handles the intricate orchestration of LLM calls, memory persistence, and secure execution of external tools. By providing a standardized interface for agent creation, it lowers the barrier to entry for developers looking to integrate autonomous capabilities into their systems, ensuring reliability and observability throughout the agent's lifecycle.

Aimed at AI developers and software engineers looking to build robust autonomous systems. Familiarity with LLM architectures and API integration is required.

  • Goal-Oriented Planning: Agents can autonomously decompose complex tasks into actionable sub-steps.
  • Tool Integration: Standardized interfaces for connecting agents to external APIs, databases, and local scripts.
  • Memory Systems: Implements both short-term context windows and long-term vector-based memory for sustained interactions.
  • Execution Sandboxing: Ensures tools are executed securely, preventing agents from performing unauthorized actions.
  • Observability Dashboard: Provides real-time insights into agent reasoning, memory states, and API usage.

Where teams use it

Autonomous Research

Creating agents that can independently gather data from the web, synthesize findings, and generate reports.

Automated Workflow Execution

Deploying agents to handle complex, multi-step business processes requiring dynamic decision making.

Personal Assistants

Building highly customized digital assistants capable of interacting with a user's local file system and preferred apps.

Interactive NPCs

Developing complex non-player characters for games that can reason and adapt to player actions.

Getting started: pip install craft-agents-oss && python -m craft_agents init

README

main branch
craft-ai-agents%2Fcraft-agents-oss | Trendshift

Craft Agents

License Contributor Covenant

How it Works (Video)

To understand what Craft Agents does and how it works watch this video.

Demo Video

Click Here (or on the image above) to watch the video on YouTube →

Why Craft Agents was built

Craft Agents is a tool we built so that we (at craft.do) can work effectively with agents. It enables intuitive multitasking, no-fluff connection to any API or Service, sharing sessions, and a more document (vs code) centric workflow - in a beautiful and fluid UI.

It uses the Claude Agent SDK and the Pi SDK side by side—building on what we found great and improving areas where we've desired improvements.

It's built with Agent Native software principles in mind, and is highly customisable out of the box. One of the first of its kind.

Craft Agents is open source under the Apache 2.0 license - so you are free to remix, change anything. And that's actually possible. We ourselves are building Craft Agents with Craft Agents only - no code editors - so really, any customisation is just a prompt away.

We built Craft Agents because we wanted a better, more opinionated (and preferably non-CLI way) of working with the most powerful agents in the world. We'll continue to improve it, based on our experiences and intuition.

image

Things that are hard to believe "just work"

How do I connect to Linear, Gmail, Slack...? Tell the agent "add Linear as a source." It finds public APIs and MCP servers, reads their docs, sets up credentials, and configures everything. No config files, no setup wizards.

Check out how I just connected to Slack →

I already have my MCP config JSON. Paste it. The agent handles the rest.

What about local MCPs? Fully supported. Stdio-based MCP servers run as local subprocesses on your machine. Point it at an npx command, a Python script, or any local binary. It just works.

Can it handle custom APIs? Yes. Paste an OpenAPI spec, some endpoint URLs, screenshots of docs, whatever you have. It figures it out and guides you through the rest.

APIs too? Not just MCPs? Craft Agents connects to anything. We have it hooked up to a direct Postgres DB behind a jumpbox. Skills + Sources = magic.

How do I import my Claude Code skills and MCPs? Tell the agent you want to import your skills from Claude Code. It handles the migration.

Here I imported all my skills in one go →

How do I create a new skill? Describe what the skill should do, give it context. The agent takes care of the rest.

Do I need to restart after changes? No. Everything is instant. Mention new skills or sources with @, even mid-conversation.

So I can just ask it anything? Yes. That's the core idea behind agent-native software. You describe what you want, and it figures out how. That's a good use of tokens.

Installation

One-Line Install (Recommended)

macOS / Linux:

curl -fsSL https://thecraftagents.com/install-app.sh | bash

Windows (PowerShell):

irm https://thecraftagents.com/install-app.ps1 | iex

Build from Source

git clone https://github.com/lukilabs/craft-agents-oss.git
cd craft-agents-oss
bun install
bun run electron:start

Features

  • Multi-Session Inbox: Desktop app with session management, status workflow, and flagging
  • Claude Code Experience: Streaming responses, tool visualization, real-time updates
  • Multiple LLM Connections: Add multiple AI providers and set per-workspace defaults
  • Multi-Provider Support: Run sessions with Google AI Studio, ChatGPT Plus, GitHub Copilot, or OpenAI API keys alongside Anthropic
  • Craft MCP Integration: Access to 32+ Craft document tools (blocks, collections, search, tasks)
  • Sources: Connect to MCP servers, REST APIs (Google, Slack, Microsoft), and local filesystems
  • Permission Modes: Three-level system (Explore, Ask to Edit, Auto) with customizable rules
  • Background Tasks: Run long-running operations with progress tracking
  • Dynamic Status System: Customizable session workflow states (Todo, In Progress, Done, etc.)
  • Theme System: Cascading themes at app and workspace levels
  • Multi-File Diff: VS Code-style window for viewing all file changes in a turn
  • Skills: Specialized agent instructions stored per-workspace
  • File Attachments: Drag-drop images, PDFs, Office documents with auto-conversion
  • Automations: Event-driven automation — create agent sessions on label changes, schedules, tool use, and more

Quick Start

  1. Launch the app after installation
  2. Choose API Connection: Use Anthropic (API key or Claude Max), Google AI Studio, ChatGPT Plus (Codex OAuth), or GitHub Copilot OAuth
  3. Create a workspace: Set up a workspace to organize your sessions
  4. Connect sources (optional): Add MCP servers, REST APIs, or local filesystems
  5. Start chatting: Create sessions and interact with Claude

Desktop App Features

Session Management

  • Inbox/Archive: Sessions organized by workflow status
  • Flagging: Mark important sessions for quick access
  • Status Workflow: Todo → In Progress → Needs Review → Done
  • Session Naming: AI-generated titles or manual naming
  • Session Persistence: Full conversation history saved to disk

Sources

Connect external data sources to your workspace:

Type Examples
MCP Servers Craft, Linear, GitHub, Notion, custom servers
REST APIs Google (Gmail, Calendar, Drive, YouTube, Search Console), Slack, Microsoft
Local Files Filesystem, Obsidian vaults, Git repos

Permission Modes

Mode Display Behavior
safe Explore Read-only, blocks all write operations
ask Ask to Edit Prompts for approval (default)
allow-all Auto Auto-approves all commands

Use SHIFT+TAB to cycle through modes in the chat interface.

Keyboard Shortcuts

Shortcut Action
Cmd+N New chat
Cmd+1/2/3 Focus sidebar/list/chat
Cmd+/ Keyboard shortcuts dialog
SHIFT+TAB Cycle permission modes
Enter Send message
Shift+Enter New line

Remote Server (Headless)

Craft Agents can run as a headless server on a remote machine (e.g., a Linux VPS), with the desktop app connecting as a thin client. This lets you keep long-running sessions alive, access them from multiple machines, and run compute-heavy tasks on a powerful server.

Quick Start

From the monorepo root:

# Generate a token and start the server
CRAFT_SERVER_TOKEN=$(openssl rand -hex 32) bun run packages/server/src/index.ts

The server prints the connection details on startup:

CRAFT_SERVER_URL=ws://203.0.113.5:9100
CRAFT_SERVER_TOKEN=<generated-token>

Copy these values and use them to connect the desktop app.

Connecting the Desktop App

Launch the Electron app in thin-client mode by passing the server URL and token:

CRAFT_SERVER_URL=wss://203.0.113.5:9100 CRAFT_SERVER_TOKEN=<token> bun run electron:start

In thin-client mode, the desktop app renders the UI but all session logic, tool execution, and LLM calls run on the remote server.

Environment Variables

Variable Required Default Description
CRAFT_SERVER_TOKEN Yes — Bearer token for client authentication
CRAFT_RPC_HOST No 127.0.0.1 Bind address (0.0.0.0 for remote access)
CRAFT_RPC_PORT No 9100 Bind port
CRAFT_RPC_TLS_CERT No — Path to PEM certificate file (enables wss://)
CRAFT_RPC_TLS_KEY No — Path to PEM private key file (required with cert)
CRAFT_RPC_TLS_CA No — Path to PEM CA chain file (optional, for client cert verification)
CRAFT_DEBUG No false Enable debug logging

TLS (Recommended for Remote Access)

When exposing the server over the network, TLS encrypts the WebSocket connection (wss:// instead of ws://).

Generate a self-signed certificate (development/testing):

./scripts/generate-dev-cert.sh
# Creates certs/cert.pem and certs/key.pem (valid 365 days)

Start the server with TLS:

CRAFT_SERVER_TOKEN=<token> \
CRAFT_RPC_HOST=0.0.0.0 \
CRAFT_RPC_TLS_CERT=certs/cert.pem \
CRAFT_RPC_TLS_KEY=certs/key.pem \
bun run packages/server/src/index.ts

The server will print CRAFT_SERVER_URL=wss://<your-public-ip>:9100.

For production, use certificates from a trusted CA (e.g., Let's Encrypt) or place the server behind a reverse proxy (nginx, Caddy) that terminates TLS.

Docker

docker run -d \
  -p 9100:9100 \
  -e CRAFT_SERVER_TOKEN=<token> \
  -e CRAFT_RPC_HOST=0.0.0.0 \
  -v craft-data:/root/.craft-agent \
  craft-agents-server

To enable TLS in Docker, mount your certificates and set the env vars:

docker run -d \
  -p 9100:9100 \
  -e CRAFT_SERVER_TOKEN=<token> \
  -e CRAFT_RPC_HOST=0.0.0.0 \
  -e CRAFT_RPC_TLS_CERT=/certs/cert.pem \
  -e CRAFT_RPC_TLS_KEY=/certs/key.pem \
  -v ./certs:/certs:ro \
  -v craft-data:/root/.craft-agent \
  craft-agents-server

CLI Client

A terminal client that connects to a running Craft Agent server over WebSocket (ws:// or wss://). Use it for scripting, CI/CD pipelines, server validation, or when you prefer the command line.

Installation

# From the monorepo (requires Bun)
bun run apps/cli/src/index.ts --help

# Or add to your PATH
alias craft-cli="bun run $(pwd)/apps/cli/src/index.ts"

Connection

The CLI reads connection details from flags or environment variables:

# Via environment (set once)
export CRAFT_SERVER_URL=ws://127.0.0.1:9100
export CRAFT_SERVER_TOKEN=<your-token>

# Or via flags
craft-cli --url ws://127.0.0.1:9100 --token <token> ping

For TLS connections (wss://), use --tls-ca <path> for self-signed certificates.

Commands

Command Description
ping Verify connectivity (clientId + latency)
health Check credential store health
versions Show server runtime versions
workspaces List workspaces
sessions List sessions in workspace
connections List LLM connections
sources List configured sources
session create Create a session (--name, --mode)
session messages <id> Print session message history
session delete <id> Delete a session
send <id> <message> Send message and stream AI response
cancel <id> Cancel in-progress processing
invoke <channel> [args] Raw RPC call with JSON args
listen <channel> Subscribe to push events (Ctrl+C to stop)
run <prompt> Self-contained: spawn server, run prompt, stream response, exit
--validate-server 21-step integration test (auto-spawns server if no --url)
Run Command Flags
Flag Default Description
--workspace-dir <path> — Register a workspace directory before running
--source <slug> — Enable a source (repeatable)
--output-format <fmt> text Output format: text or stream-json
--mode <mode> allow-all Permission mode for the session
--no-cleanup false Skip session deletion on exit
--server-entry <path> — Custom server entry point
--provider <name> anthropic LLM provider (anthropic, openai, google, openrouter, groq, mistral, xai, etc.)
--model <id> (provider default) Model ID (e.g., claude-sonnet-4-5-20250929, gpt-4o, gemini-2.0-flash)
--api-key <key> — API key (or $LLM_API_KEY, or provider-specific env var)
--base-url <url> — Custom API endpoint for proxies or self-hosted models

The run command is fully self-contained — it spawns a headless server, creates a session, sends the prompt, streams the response, and exits. No separate server setup needed. An API key is resolved from --api-key, $LLM_API_KEY, or a provider-specific env var (e.g., $ANTHROPIC_API_KEY, $OPENAI_API_KEY).

Examples

# Quick connectivity check
craft-cli ping

# List sessions (human-readable)
craft-cli sessions

# Send a message and stream the AI response
craft-cli send abc-123 "What files are in the current directory?"

# Pipe input
echo "Summarize this" | craft-cli send abc-123

# JSON output for scripting
craft-cli --json workspaces | jq '.[].name'

# Self-contained run (spawns its own server)
craft-cli run "Summarize the README"
craft-cli run --workspace-dir ./my-project --source github "List open PRs"

# Multi-provider support
craft-cli run --provider openai --model gpt-4o "Summarize this repo"
GOOGLE_API_KEY=... craft-cli run --provider google --model gemini-2.0-flash "Hello"
craft-cli run --provider anthropic --base-url https://openrouter.ai/api/v1 --api-key $OR_KEY "Hello"

# Validate the server (auto-spawns if no --url)
craft-cli --validate-server
craft-cli --validate-server --url ws://127.0.0.1:9100 --token <token>

Architecture

craft-agent/
├── apps/
│   ├── cli/                   # Terminal client (CLI)
│   └── electron/              # Desktop GUI (primary)
│       └── src/
│           ├── main/          # Electron main process
│           ├── preload/       # Context bridge
│           └── renderer/      # React UI (Vite + shadcn)
└── packages/
    ├── core/                  # Shared types
    └── shared/                # Business logic
        └── src/
            ├── agent/         # CraftAgent, permissions
            ├── auth/          # OAuth, tokens
            ├── config/        # Storage, preferences, themes
            ├── credentials/   # AES-256-GCM encrypted storage
            ├── sessions/      # Session persistence
            ├── sources/       # MCP, API, local sources
            └── statuses/      # Dynamic status system

Development

# Hot reload development
bun run electron:dev

# Build and run
bun run electron:start

# Type checking
bun run typecheck:all

# Debug logging (writes to ~/Library/Logs/@craft-agent/electron/)
# Logs are automatically enabled in development

Environment Variables

OAuth integrations (Slack, Microsoft) require credentials baked into the build. Create a .env file:

MICROSOFT_OAUTH_CLIENT_ID=your-client-id
SLACK_OAUTH_CLIENT_ID=your-slack-client-id
SLACK_OAUTH_CLIENT_SECRET=your-slack-client-secret

Note: Google OAuth credentials are NOT baked into the build. Users provide their own credentials via source configuration. See the Google OAuth Setup section below.

Google OAuth Setup (Gmail, Calendar, Drive, YouTube, Search Console)

Google integrations require you to create your own OAuth credentials. This is a one-time setup.

1. Create a Google Cloud Project
  1. Go to Google Cloud Console
  2. Create a new project (or select an existing one)
  3. Note your Project ID
2. Enable Required APIs

Go to APIs & Services → Library and enable the APIs you need:

  • Gmail API - for email integration
  • Google Calendar API - for calendar integration
  • Google Drive API - for file storage integration
3. Configure OAuth Consent Screen
  1. Go to APIs & Services → OAuth consent screen
  2. Select External user type (unless you have Google Workspace)
  3. Fill in required fields:
    • App name: e.g., "My Craft Agent"
    • User support email: your email
    • Developer contact: your email
  4. Add scopes (optional - can leave default)
  5. Add yourself as a test user (required for External apps in testing mode)
  6. Complete the wizard
4. Create OAuth Credentials
  1. Go to APIs & Services → Credentials
  2. Click Create Credentials → OAuth Client ID
  3. Application type: Web application (not "Desktop app" — Craft Agent routes every OAuth flow through a hosted callback, which a Desktop-app client rejects with redirect_uri_mismatch)
  4. Name: e.g., "Craft Agent"
  5. Under Authorized redirect URIs, add: https://thecraftagents.com/auth/callback
  6. Click Create
  7. Note the Client ID and Client Secret
5. Configure in Craft Agent

When setting up a Google source (Gmail, Calendar, Drive, YouTube, Search Console, etc.), add these fields to your source's config.json:

{
  "api": {
    "googleService": "gmail",
    "googleOAuthClientId": "your-client-id.apps.googleusercontent.com",
    "googleOAuthClientSecret": "your-client-secret"
  }
}

Or simply tell the agent you want to connect Gmail/Calendar/Drive - it will guide you through entering your credentials.

Security Notes
  • Your OAuth credentials are stored encrypted alongside other source credentials
  • Never commit credentials to version control
  • For production use, consider getting your OAuth consent screen verified by Google

Supported LLM Providers

Craft Agents supports multiple ways to connect to LLM providers:

Direct Connections

Provider Auth Notes
Anthropic API key or Claude Max/Pro OAuth Direct Claude connection via the Claude Agent SDK
Google AI Studio API key Gemini models with native Google Search grounding built in
ChatGPT Plus / Pro Codex OAuth Sign in with your ChatGPT subscription — uses OpenAI's Codex models
GitHub Copilot OAuth (device code) One-click authentication with your Copilot subscription

Third-Party & Self-Hosted Providers

Additional providers are supported through the Claude / Anthropic API Key connection by choosing a custom endpoint:

Provider Endpoint Notes
OpenRouter https://openrouter.ai/api Access Claude, GPT, Llama, Gemini, and hundreds of other models through a single API key. Use provider/model-name format (e.g. anthropic/claude-opus-4.7).
Vercel AI Gateway https://ai-gateway.vercel.sh Route requests through Vercel's AI Gateway with built-in observability and caching.
Ollama http://localhost:11434 Run open-source models locally. No API key required.
Custom Any URL Any OpenAI-compatible or Anthropic-compatible endpoint.

Architecture

Craft Agents uses two agent backends:

  • Claude — powered by the Claude Agent SDK, which natively supports custom base URLs and provider routing. Anthropic API key, Claude Max/Pro OAuth, and all third-party endpoints use this backend.
  • Pi — powered by the Pi SDK, which handles Google AI Studio, ChatGPT Plus (Codex OAuth), GitHub Copilot OAuth, and OpenAI API key connections. Pi connections route through their own provider infrastructure.

Configuration

Configuration is stored at ~/.craft-agent/:

~/.craft-agent/
├── config.json              # Main config (workspaces, LLM connections)
├── credentials.enc          # Encrypted credentials (AES-256-GCM)
├── preferences.json         # User preferences
├── theme.json               # App-level theme
└── workspaces/
    └── {id}/
        ├── config.json      # Workspace settings
        ├── theme.json       # Workspace theme override
        ├── automations.json  # Event-driven automations
        ├── sessions/        # Session data (JSONL)
        ├── sources/         # Connected sources
        ├── skills/          # Custom skills
        └── statuses/        # Status configuration

Automations

Automations let you automate workflows by triggering actions when events happen — labels change, sessions start, tools run, or on a cron schedule.

Just ask the agent:

  • "Set up a daily standup briefing every weekday at 9am"
  • "Notify me when a session is labelled urgent"
  • "Track permission mode changes and summarise them"
  • "Every Friday at 5pm, summarise this week's completed tasks"

Or configure manually in ~/.craft-agent/workspaces/{id}/automations.json:

{
  "version": 2,
  "automations": {
    "SchedulerTick": [
      {
        "cron": "0 9 * * 1-5",
        "timezone": "America/New_York",
        "labels": ["Scheduled"],
        "actions": [
          { "type": "prompt", "prompt": "Check @github for new issues assigned to me" }
        ]
      }
    ],
    "LabelAdd": [
      {
        "matcher": "^urgent$",
        "actions": [
          { "type": "prompt", "prompt": "An urgent label was added. Triage the session and summarise what needs attention." }
        ]
      }
    ]
  }
}

Prompt actions create a new agent session with a prompt. They support @mentions for sources and skills, and environment variables like $CRAFT_LABEL and $CRAFT_SESSION_ID are expanded automatically.

Supported events: LabelAdd, LabelRemove, PermissionModeChange, FlagChange, SessionStatusChange, SchedulerTick, PreToolUse, PostToolUse, SessionStart, SessionEnd, and more.

See the Automations documentation for the full reference.

Advanced Features

Large Response Handling

Tool responses exceeding ~60KB are automatically summarized using Claude Haiku with intent-aware context. The _intent field is injected into MCP tool schemas to preserve summarization focus.

Deep Linking

External apps can navigate using craftagents:// URLs:

craftagents://allSessions                      # All sessions view
craftagents://allSessions/session/session123   # Specific session
craftagents://settings                         # Settings
craftagents://sources/source/github            # Source info
craftagents://action/new-chat                  # Create new session

Tech Stack

Layer Technology
Runtime Bun
AI @anthropic-ai/claude-agent-sdk
AI (Pi) Pi SDK agent server
Desktop Electron + React
UI shadcn/ui + Tailwind CSS v4
Build esbuild (main) + Vite (renderer)
Credentials AES-256-GCM encrypted file storage

Troubleshooting

Debug Mode

To launch the packaged app with verbose logging enabled, use -- --debug (note the double dash separator):

macOS:

/Applications/Craft\ Agents.app/Contents/MacOS/Craft\ Agents -- --debug

Windows (PowerShell):

& "$env:LOCALAPPDATA\Programs\@craft-agentelectron\Craft Agents.exe" -- --debug

Linux:

./craft-agents -- --debug

Logs are written to:

  • macOS: ~/Library/Logs/@craft-agent/electron/main.log
  • Windows: %APPDATA%\@craft-agent\electron\logs\main.log
  • Linux: ~/.config/@craft-agent/electron/logs/main.log

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

Third-Party Licenses

This project uses the Claude Agent SDK, which is subject to Anthropic's Commercial Terms of Service.

Trademark

"Craft" and "Craft Agents" are trademarks of Craft Docs Ltd. See TRADEMARK.md for usage guidelines.

Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines.

Security

Local MCP Server Isolation

When spawning local MCP servers (stdio transport), sensitive environment variables are filtered out to prevent credential leakage to subprocesses. Blocked variables include:

  • ANTHROPIC_API_KEY, CLAUDE_CODE_OAUTH_TOKEN (app auth)
  • AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN
  • GITHUB_TOKEN, GH_TOKEN, OPENAI_API_KEY, GOOGLE_API_KEY, STRIPE_SECRET_KEY, NPM_TOKEN

To explicitly pass an env var to a specific MCP server, use the env field in the source config.

To report security vulnerabilities, please see SECURITY.md.

View on GitHub

Recent activity

commits and pull requests

Releases and announcements

85 total
  1. v0.13.5v0.13.5Sep 23, 2026297 downloads

    ## Features - **Claude Opus 5.5 is the new default** — Anthropic's newest Opus (released 2026-09-22) is available on direct Anthropic connections, on AWS Bedrock (us/eu/global inference profiles) and on other Pi-backed Anthropic connections, with the full 1M-token context window at $4/$20 per million tokens — cheaper than Opus 4.8. New connections default to it; existing connections keep the model they are pinned to, and Opus 4.8 stays selectable. Opus 5.5 runs with adaptive thinking always on, like Fable: the "Off" thinking level now means low-effort adaptive thinking on this model. Claude Opus 5 is registered as well, so it shows its real 1M context instead of 200K. Models that appear in the live Anthropic model list before Craft Agents knows them now take their context window from the API instead of falling back to 200K. ## Improvements - **Claude Agent SDK 0.3.258 → 0.3.280** — Claude Code 2.1.280 parity, with no breaking changes. Brings the `verbatimPrompts` option, MCP resource reading, faster first-turn startup (no fixed wait for deferred MCP servers), fixed usage totals on resumed sessions, and clearer errors when an account needs verification or cloud credentials are re

  2. v0.13.4v0.13.4Sep 20, 2026288 downloads

    ## Improvements - **Richer developer context for the agent** — The system prompt now provides structured developer context — the current git branch, working-tree status, and recent commits — together with clearer guidance on when to create and run automations. The agent starts each session better oriented to your working environment and more consistent about reaching for automations. ## Bug Fixes - **Steered messages are no longer dropped mid-turn** — Fixes [#1040](https://github.com/craft-ai-agents/craft-agents-oss/issues/1040). Sending several steering messages during a single turn previously left the agent addressing only the last one. Pending steers are now held in a turn-scoped queue and delivered in order at each tool boundary, so every message reaches the agent. - **Accurate context usage and compaction for Claude** — Fixes [#1043](https://github.com/craft-ai-agents/craft-agents-oss/issues/1043). The context/token indicator now reads both usage shapes the SDK reports, so Claude connections show a correct figure instead of a wrong or stale one. Automatic compaction is reflected in the count, and any compaction boundary — including a manual Compact — invalidates the previo

  3. v0.13.3v0.13.3Sep 7, 2026413 downloads

    ## Features - **GPT-6 Astra on OpenAI connections** — Pi SDK 0.85.1 adds `gpt-6-astra` to the OpenAI API-key and ChatGPT-account catalogs. New OpenAI connections default to Astra, with GPT-5.6 Sol ranked next. Existing connections keep their explicit default model and see Astra in the picker after the next startup. Reasoning levels Low through Max are supported natively. ## Improvements - **Automatic recovery with visible progress** — Pi-backed conversations now stay open while the SDK retries temporary rate limits, provider outages, and connection drops. Progress shows the retry attempt and backoff instead of immediately displaying an error. Main conversations allow up to four turn retries with exponential backoff, plus two pre-stream provider retries honoring supported server-requested delays. Stopping during backoff cancels the turn cleanly. - **Isolated Pi settings** — Craft manages retry and compaction settings in memory. A working directory's `.pi/settings.json` can no longer silently override these settings, and Craft no longer writes Pi settings alongside the session transcript. Utility queries use a smaller retry budget bounded by their execution deadline. - **Pi SDK 0.

  4. v0.13.1v0.13.1Sep 2, 2026237 downloads

    ## Features - **Claude Fable 5.1 is here** — Anthropic's newest flagship model (GA 2026-09-01) is now available in Craft Agent on the Claude Agent SDK path, with the full 1M-token context window and lower cache-read pricing. It works across direct Anthropic connections and AWS Bedrock (us/eu/global inference-profile variants), and existing Anthropic connections pick it up automatically on their next model refresh. Opus 4.8 remains the default — Fable 5.1 is offered alongside it, listed above Fable 5 in the picker. Like all Fable/Mythos-class models it runs with adaptive thinking always on. (`43fcb84f`) ## Improvements - **Claude Agent SDK 0.3.220 → 0.3.258** — brings accurate thinking-token reporting in usage stats, per-model cost-basis tracking, and MCP resource links, with no breaking changes. (`43fcb84f`)

  5. v0.13.0v0.13.0Sep 1, 202661 downloads

    ## Features - **Pages (Beta)** — agents can now build you persistent mini apps: dashboards, reports, trackers, and small tools that live in your workspace, appear as tiles in the new **Pages** sidebar section (filterable by project), and render inside the app in a sandboxed frame. Each page has its own small data store (key-values plus time series) that agents update through session tools, and a cached preview poster on its tile. This is a beta: expect rough edges and tell us what you build. - **Scheduled refresh** — give a page a cron schedule and a workspace script, and its data updates deterministically in the background — no agent session, no token cost. Schedules are validated when saved (minimum interval: 5 minutes), and refresh failures surface on the page instead of failing silently. - **Page actions with approved grants** — interactive pages can trigger real source calls (an API endpoint, an MCP tool, or a workspace script) strictly through capabilities you approve per page. Grants are bound to the exact page content and expire; anything that can change something requires a fresh click inside the page; every decision lands in an audit log; and you can remove any approval

Code frequency

additions and deletions
+134K-134KWeek of 2026-01-18: +131,792 linesWeek of 2026-01-18: -12,307 linesWeek of 2026-01-25: +47,180 linesWeek of 2026-01-25: -5,835 linesWeek of 2026-02-01: +9,764 linesWeek of 2026-02-01: -2,031 linesWeek of 2026-02-08: +134,009 linesWeek of 2026-02-08: -24,995 linesWeek of 2026-02-15: +13,271 linesWeek of 2026-02-15: -2,793 linesWeek of 2026-02-22: +30,880 linesWeek of 2026-02-22: -31,633 linesWeek of 2026-03-01: +76,288 linesWeek of 2026-03-01: -50,699 linesWeek of 2026-03-08: +25,100 linesWeek of 2026-03-08: -6,815 linesWeek of 2026-03-15: +7,980 linesWeek of 2026-03-15: -1,334 linesWeek of 2026-03-22: +11,627 linesWeek of 2026-03-22: -35,480 linesWeek of 2026-03-29: +3,147 linesWeek of 2026-03-29: -1,190 linesWeek of 2026-04-05: +13,577 linesWeek of 2026-04-05: -2,346 linesWeek of 2026-04-12: +6,908 linesWeek of 2026-04-12: -761 linesWeek of 2026-04-19: +18,710 linesWeek of 2026-04-19: -1,775 linesWeek of 2026-04-26: +10,144 linesWeek of 2026-04-26: -836 linesWeek of 2026-05-03: +11,093 linesWeek of 2026-05-03: -1,264 linesWeek of 2026-05-10: +8,339 linesWeek of 2026-05-10: -1,450 linesWeek of 2026-05-17: +4,167 linesWeek of 2026-05-17: -797 linesWeek of 2026-05-24: +4,787 linesWeek of 2026-05-24: -346 linesWeek of 2026-05-31: +1,365 linesWeek of 2026-05-31: -534 linesWeek of 2026-06-07: +921 linesWeek of 2026-06-07: -142 linesWeek of 2026-06-14: +0 linesWeek of 2026-06-14: -0 linesWeek of 2026-06-21: +568 linesWeek of 2026-06-21: -807 linesWeek of 2026-06-28: +122 linesWeek of 2026-06-28: -51 linesWeek of 2026-07-05: +19,603 linesWeek of 2026-07-05: -638 linesWeek of 2026-07-12: +0 linesWeek of 2026-07-12: -0 linesWeek of 2026-07-19: +1,509 linesWeek of 2026-07-19: -238 linesWeek of 2026-07-26: +0 linesWeek of 2026-07-26: -0 linesWeek of 2026-08-02: +1,177 linesWeek of 2026-08-02: -270 linesWeek of 2026-08-09: +0 linesWeek of 2026-08-09: -0 linesWeek of 2026-08-16: +621 linesWeek of 2026-08-16: -322 linesWeek of 2026-08-23: +1,855 linesWeek of 2026-08-23: -241 linesWeek of 2026-08-30: +14,720 linesWeek of 2026-08-30: -449 linesWeek of 2026-09-06: +3,539 linesWeek of 2026-09-06: -1,003 linesWeek of 2026-09-13: +0 linesWeek of 2026-09-13: -0 linesJan 18, 2026Sep 13, 2026
+614.8K lines added, -189.4K removed over the last year.

Commits per week

last 52 weeks
210Week of 2025-09-27: 0 commitsWeek of 2025-10-04: 0 commitsWeek of 2025-10-11: 0 commitsWeek of 2025-10-18: 0 commitsWeek of 2025-10-25: 0 commitsWeek of 2025-11-01: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 0 commitsWeek of 2026-01-11: 0 commitsWeek of 2026-01-18: 21 commitsWeek of 2026-01-25: 11 commitsWeek of 2026-02-01: 4 commitsWeek of 2026-02-08: 6 commitsWeek of 2026-02-15: 3 commitsWeek of 2026-02-22: 2 commitsWeek of 2026-03-01: 3 commitsWeek of 2026-03-08: 4 commitsWeek of 2026-03-15: 6 commitsWeek of 2026-03-22: 5 commitsWeek of 2026-03-29: 3 commitsWeek of 2026-04-05: 3 commitsWeek of 2026-04-12: 3 commitsWeek of 2026-04-19: 3 commitsWeek of 2026-04-26: 2 commitsWeek of 2026-05-03: 2 commitsWeek of 2026-05-10: 2 commitsWeek of 2026-05-17: 1 commitsWeek of 2026-05-24: 2 commitsWeek of 2026-05-31: 1 commitsWeek of 2026-06-07: 2 commitsWeek of 2026-06-14: 0 commitsWeek of 2026-06-21: 1 commitsWeek of 2026-06-28: 1 commitsWeek of 2026-07-05: 2 commitsWeek of 2026-07-12: 0 commitsWeek of 2026-07-19: 1 commitsWeek of 2026-07-26: 0 commitsWeek of 2026-08-02: 2 commitsWeek of 2026-08-09: 0 commitsWeek of 2026-08-16: 1 commitsWeek of 2026-08-23: 1 commitsWeek of 2026-08-30: 2 commitsWeek of 2026-09-06: 1 commitsWeek of 2026-09-13: 0 commitsWeek of 2026-09-20: 2 commitsSep 27, 2025Sep 20, 2026
103 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 0 commitsSun 1:00 — 0 commitsSun 2:00 — 0 commitsSun 3:00 — 0 commitsSun 4:00 — 0 commitsSun 5:00 — 0 commitsSun 6:00 — 0 commitsSun 7:00 — 0 commitsSun 8:00 — 0 commitsSun 9:00 — 0 commitsSun 10:00 — 0 commitsSun 11:00 — 0 commitsSun 12:00 — 0 commitsSun 13:00 — 0 commitsSun 14:00 — 0 commitsSun 15:00 — 0 commitsSun 16:00 — 1 commitsSun 17:00 — 0 commitsSun 18:00 — 0 commitsSun 19:00 — 0 commitsSun 20:00 — 1 commitsSun 21:00 — 0 commitsSun 22:00 — 0 commitsSun 23:00 — 1 commitsMon 0:00 — 1 commitsMon 1:00 — 0 commitsMon 2:00 — 0 commitsMon 3:00 — 1 commitsMon 4:00 — 0 commitsMon 5:00 — 1 commitsMon 6:00 — 0 commitsMon 7:00 — 0 commitsMon 8:00 — 2 commitsMon 9:00 — 1 commitsMon 10:00 — 1 commitsMon 11:00 — 0 commitsMon 12:00 — 2 commitsMon 13:00 — 2 commitsMon 14:00 — 1 commitsMon 15:00 — 2 commitsMon 16:00 — 2 commitsMon 17:00 — 1 commitsMon 18:00 — 3 commitsMon 19:00 — 1 commitsMon 20:00 — 1 commitsMon 21:00 — 1 commitsMon 22:00 — 0 commitsMon 23:00 — 1 commitsTue 0:00 — 1 commitsTue 1:00 — 0 commitsTue 2:00 — 0 commitsTue 3:00 — 0 commitsTue 4:00 — 0 commitsTue 5:00 — 0 commitsTue 6:00 — 0 commitsTue 7:00 — 0 commitsTue 8:00 — 1 commitsTue 9:00 — 1 commitsTue 10:00 — 1 commitsTue 11:00 — 1 commitsTue 12:00 — 1 commitsTue 13:00 — 2 commitsTue 14:00 — 2 commitsTue 15:00 — 0 commitsTue 16:00 — 4 commitsTue 17:00 — 0 commitsTue 18:00 — 0 commitsTue 19:00 — 0 commitsTue 20:00 — 1 commitsTue 21:00 — 3 commitsTue 22:00 — 2 commitsTue 23:00 — 1 commitsWed 0:00 — 1 commitsWed 1:00 — 1 commitsWed 2:00 — 0 commitsWed 3:00 — 0 commitsWed 4:00 — 0 commitsWed 5:00 — 0 commitsWed 6:00 — 0 commitsWed 7:00 — 1 commitsWed 8:00 — 2 commitsWed 9:00 — 0 commitsWed 10:00 — 1 commitsWed 11:00 — 2 commitsWed 12:00 — 2 commitsWed 13:00 — 0 commitsWed 14:00 — 1 commitsWed 15:00 — 0 commitsWed 16:00 — 0 commitsWed 17:00 — 2 commitsWed 18:00 — 1 commitsWed 19:00 — 1 commitsWed 20:00 — 1 commitsWed 21:00 — 5 commitsWed 22:00 — 2 commitsWed 23:00 — 0 commitsThu 0:00 — 0 commitsThu 1:00 — 1 commitsThu 2:00 — 0 commitsThu 3:00 — 1 commitsThu 4:00 — 0 commitsThu 5:00 — 0 commitsThu 6:00 — 1 commitsThu 7:00 — 0 commitsThu 8:00 — 0 commitsThu 9:00 — 0 commitsThu 10:00 — 1 commitsThu 11:00 — 0 commitsThu 12:00 — 2 commitsThu 13:00 — 1 commitsThu 14:00 — 0 commitsThu 15:00 — 0 commitsThu 16:00 — 0 commitsThu 17:00 — 2 commitsThu 18:00 — 1 commitsThu 19:00 — 2 commitsThu 20:00 — 0 commitsThu 21:00 — 3 commitsThu 22:00 — 2 commitsThu 23:00 — 0 commitsFri 0:00 — 0 commitsFri 1:00 — 1 commitsFri 2:00 — 0 commitsFri 3:00 — 0 commitsFri 4:00 — 0 commitsFri 5:00 — 0 commitsFri 6:00 — 0 commitsFri 7:00 — 0 commitsFri 8:00 — 1 commitsFri 9:00 — 0 commitsFri 10:00 — 1 commitsFri 11:00 — 0 commitsFri 12:00 — 1 commitsFri 13:00 — 2 commitsFri 14:00 — 0 commitsFri 15:00 — 0 commitsFri 16:00 — 0 commitsFri 17:00 — 2 commitsFri 18:00 — 0 commitsFri 19:00 — 1 commitsFri 20:00 — 0 commitsFri 21:00 — 0 commitsFri 22:00 — 2 commitsFri 23:00 — 1 commitsSat 0:00 — 0 commitsSat 1:00 — 0 commitsSat 2:00 — 0 commitsSat 3:00 — 0 commitsSat 4:00 — 0 commitsSat 5:00 — 0 commitsSat 6:00 — 0 commitsSat 7:00 — 1 commitsSat 8:00 — 0 commitsSat 9:00 — 0 commitsSat 10:00 — 1 commitsSat 11:00 — 1 commitsSat 12:00 — 0 commitsSat 13:00 — 0 commitsSat 14:00 — 0 commitsSat 15:00 — 0 commitsSat 16:00 — 0 commitsSat 17:00 — 0 commitsSat 18:00 — 0 commitsSat 19:00 — 0 commitsSat 20:00 — 0 commitsSat 21:00 — 0 commitsSat 22:00 — 0 commitsSat 23:00 — 0 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
DateListRankStars gained
Jan 20, 2026daily#22+157
  • freeCodeCamp/freeCodeCamp

    freeCodeCamp.org's open-source codebase and curriculum. Learn math, programming, and computer science for free.

    456.7K stars · TypeScript

  • openclaw/openclaw

    The AI that really does things. Any OS. Any Platform. The lobster way. 🦞

    391.3K stars · TypeScript

  • anomalyco/opencode

    The open source coding agent.

    211.7K stars · TypeScript

  • n8n-io/n8n

    Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.

    206.7K stars · TypeScript

  • microsoft/vscode

    Visual Studio Code

    193.5K stars · TypeScript

  • firecrawl/firecrawl

    Supercharge your AI agents with data from the web and beyond. Building the library for superintelligence. 🔥

    188.6K stars · TypeScript