{"id":48270053,"url":"https://github.com/zykjshadow/async","last_synced_at":"2026-04-26T09:01:21.817Z","repository":{"id":348005573,"uuid":"1195924163","full_name":"ZYKJShadow/Async","owner":"ZYKJShadow","description":"IDE, A native-feeling AI coding workspace that blends chat, planning, agent execution, and project navigation into a unified desktop experience.","archived":false,"fork":false,"pushed_at":"2026-04-08T07:58:52.000Z","size":8859,"stargazers_count":170,"open_issues_count":0,"forks_count":41,"subscribers_count":13,"default_branch":"master","last_synced_at":"2026-04-08T09:03:00.398Z","etag":null,"topics":["ai-coding-assistant","ai-development-tools","code-editor","cursor-alternative","electron","llm","reactjs","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ZYKJShadow.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-30T07:42:21.000Z","updated_at":"2026-04-08T08:37:58.000Z","dependencies_parsed_at":null,"dependency_job_id":"72e73cba-c7f8-4a43-bdeb-900d00e280b1","html_url":"https://github.com/ZYKJShadow/Async","commit_stats":null,"previous_names":["zykjshadow/async"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/ZYKJShadow/Async","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZYKJShadow%2FAsync","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZYKJShadow%2FAsync/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZYKJShadow%2FAsync/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZYKJShadow%2FAsync/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ZYKJShadow","download_url":"https://codeload.github.com/ZYKJShadow/Async/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZYKJShadow%2FAsync/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31782740,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T02:24:21.117Z","status":"ssl_error","status_checked_at":"2026-04-14T02:24:20.627Z","response_time":153,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-coding-assistant","ai-development-tools","code-editor","cursor-alternative","electron","llm","reactjs","typescript"],"created_at":"2026-04-04T22:09:53.285Z","updated_at":"2026-04-26T09:01:21.810Z","avatar_url":"https://github.com/ZYKJShadow.png","language":"TypeScript","readme":"# Async IDE\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/async-logo-desktop.svg\" width=\"120\" height=\"120\" alt=\"Async Logo\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eAn open-source, agent-first desktop workspace — Agent, Editor, Git, Terminal, all in one place.\u003c/strong\u003e\u003cbr/\u003e\n  Own your AI workflow: local-first, BYOK, and fully hackable.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Agent%20First-Open%20Source-818cf8?style=flat-square\" alt=\"Agent First \u0026 Open Source\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/license-Apache--2.0-blue?style=flat-square\" alt=\"License\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Electron-41-47848F?style=flat-square\u0026logo=electron\u0026logoColor=white\" alt=\"Electron\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/TypeScript-5.9-3178C6?style=flat-square\u0026logo=typescript\u0026logoColor=white\" alt=\"TypeScript\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/React-19-61DAFB?style=flat-square\u0026logo=react\u0026logoColor=black\" alt=\"React\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Monaco-0.52-0078D4?style=flat-square\" alt=\"Monaco Editor\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"README.md\"\u003eEnglish\u003c/a\u003e | \u003ca href=\"README.zh-CN.md\"\u003e简体中文\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## Why Async?\n\nAsync IDE is built around a simple idea: **the agent should be the center of gravity**, not a chat panel bolted onto the side of an editor. Everything — workspace access, tool execution, diff review, terminal operations — revolves around a transparent **Think → Plan → Execute → Observe** loop that you can see, steer, and interrupt at any time.\n\nIt is also **built from scratch** on Electron + React + Monaco — not a fork of VS Code. That means a smaller, fully hackable codebase, faster iteration, and no baggage from an editor you never asked for.\n\nThe project is **Apache 2.0**, **BYOK** for model access, and **local-first** by default: your threads, settings, and plans live on your machine, not in someone else's cloud.\n\n---\n\n## What is Async IDE?\n\nAsync IDE is an open-source AI-native desktop application designed as your command center for working with coding agents. It starts from the **Agent Loop** and brings multi-model conversations, autonomous tool execution, and review workflows into a single workspace.\n\n### Why use Async?\n\n- **Agent-first** — The agent can directly access your workspace, tools, and terminal through a clear **Think → Plan → Execute → Observe** loop.\n- **Transparent process** — Streaming tool parameters (JSON rendered as it generates) + **tool trajectory** cards (`Read`, `Write`, `Edit`, `Glob`, `Grep`, Shell, etc.), so every step is visible.\n- **Full control** — Use your own API keys, keep conversation history and repo state entirely local, with no dependency on cloud services.\n- **Git-native** — Status, diffs, and agent-driven changes stay in sync with your actual repository.\n- **Four Composer modes** — **Agent** (autonomous execution), **Plan** (review first, then run), **Ask** (read-only Q\u0026A), and **Debug** (systematic troubleshooting), covering various development scenarios.\n- **IM bot bridge** — Wire **Telegram**, **Slack**, **Discord**, and **Feishu (Lark)** into the same Agent / **Team** toolchain as the desktop app, with per-integration model, workspace roots, allowlists, optional HTTP proxy, and streaming replies where the platform supports it.\n- **Lean shell, built from scratch** — Electron + React + Monaco, **Agent / Editor** dual layout, embedded terminal. Not a VS Code fork — smaller surface area, fewer abstractions to fight, and every line is yours to change.\n\n---\n\n## Screenshots (partial)\n\n### Agent Layout\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/workspace_1.png\" width=\"3062\" alt=\"Async Agent Layout\" /\u003e\n\u003c/p\u003e\n\n### Model Settings\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/setting_1.png\" width=\"1824\" alt=\"Async Model Settings\" /\u003e\n\u003c/p\u003e\n\n### Appearance Color Palette\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/setting_2.png\" width=\"1829\" alt=\"Async Appearance Color Palette\" /\u003e\n\u003c/p\u003e\n\n#### Mac Codex Theme\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/setting_3.png\" width=\"1829\" alt=\"Async Mac Codex Theme\" /\u003e\n\u003c/p\u003e\n\n### Browser tool invocation (with customizable request headers)\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/browser_1.png\" width=\"2868\" alt=\"Async 模型设置\" /\u003e\n\u003c/p\u003e\n\n### Multi-Agent Collaborative Expert Group\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/multi_agent_1.png\" width=\"2871\" alt=\"Async 模型设置\" /\u003e\n\u003c/p\u003e\n\n### Control the entire application through external robots in a conversational manner.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/bot_1.png\" width=\"2871\" alt=\"Async 模型设置\" /\u003e\n\u003c/p\u003e\n\n### All-rounder Terminal (Internal commands can be directly invoked by Agents and robots)\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/terminal_1.png\" width=\"2859\" alt=\"Async 模型设置\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/terminal_2.png\" width=\"2871\" alt=\"Async 模型设置\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/terminal_3.png\" width=\"2865\" alt=\"Async 模型设置\" /\u003e\n\u003c/p\u003e\n\n---\n\n## Core Features\n\n### Autonomous Agent Loop\n\n- Streaming tool parameters with trajectory cards for clear execution visibility.\n- **Plan** and **Agent** dual modes: review the plan first, or let the agent run directly.\n- Approval gates for shell commands and file writes.\n- Editor context sync so agent edits can focus on the relevant file and line range.\n- Support for nested sub-agents, background execution, and timeline-style activity rendering.\n\n### Multi-Model Support\n\n- Built-in adapters for **Anthropic**, **OpenAI**, and **Gemini**.\n- Support for OpenAI-compatible endpoints like Ollama, vLLM, aggregators, or self-hosted services.\n- Streaming thinking blocks on supported models.\n- **Auto** mode to automatically pick the best available model.\n\n### Developer Experience\n\n- **Monaco** editor with multi-tab support, syntax highlighting, and diff review flows.\n- **Git** integration: status, diff, staging, commit, and push all available from the UI.\n- **xterm.js** terminal: for both user commands and observing agent shell operations.\n- **Composer** with `@` file mentions, rich segments, and persistent threads.\n- **Quick Open** palette (`Ctrl/Cmd+P`) and keyboard-first navigation.\n- Built-in i18n support for English and Simplified Chinese.\n- Support for local disk skills, workspace config merge, and tool approval controls.\n\n### IM / Bot integrations\n\nAsync can act as the **host** for coding agents on external chat surfaces, not only inside the Electron UI.\n\n- **Platforms** — **Telegram**, **Slack**, **Discord**, and **Feishu (Lark)** via dedicated adapters under `main-src/bots/platforms/`.\n- **Same runtime** — Inbound messages run through **`botRuntime`**: normal threads use **`agentLoop`**, while **Team** mode uses the same **`teamOrchestrator`** path as the desktop Composer, including worker streaming and tool status where applicable.\n- **Per integration** — Enable/disable, display name, **default model**, **default Composer mode** (`agent` / `ask` / `plan` / `team`), **workspace root(s)**, optional **allowlists** for chats and users, and an extra **system prompt** on top of project rules.\n- **Connectivity** — Optional **HTTP proxy URL** per platform (shared pattern for token calls and webhooks) when vendor APIs must go through a corporate proxy.\n- **Feishu** — App credentials, optional encryption, **streaming interactive cards** for long-running replies, and session hygiene when integration settings change.\n- **Configuration UI** — Managed from **Settings → Bots** (`SettingsBotsPanel.tsx`).\n\nFor a deeper module-level walkthrough, see the maintainer-oriented notes under [`docs/llm-wiki/`](./docs/llm-wiki/).\n\n---\n\n## Technical Architecture\n\n```text\n┌─────────────────────────────────────────────────────────┐\n│                    Renderer Process                    │\n│  React + Vite  │  Monaco Editor  │  xterm.js Terminal  │\n│  Composer / Chat / Plan / Agent UI                     │\n└──────────────────────────┬──────────────────────────────┘\n                           │  contextBridge (IPC)\n┌──────────────────────────▼──────────────────────────────┐\n│                      Main Process                      │\n│  agentLoop.ts  │  toolExecutor.ts  │  LLM Adapters     │\n│  gitService    │  threadStore      │  settingsStore    │\n│  workspace     │  LSP session      │  PTY terminal     │\n└─────────────────────────────────────────────────────────┘\n```\n\n### Tech Stack\n\n| Technology | Version | Purpose |\n|------------|---------|---------|\n| **React** | ^19.2.4 | UI framework |\n| **Electron** | 41.1.0 | Desktop app shell |\n| **Vite** | ^6.0.3 | Build tool \u0026 dev server |\n| **TypeScript** | ^5.9.3 | Type-safe development |\n| **Monaco Editor** | ^0.52.0 | Code editor component |\n| **xterm.js** | ^5.5.0 | Terminal emulator |\n| **OpenAI SDK** | ^4.96.0 | OpenAI API client |\n| **Anthropic SDK** | ^0.39.0 | Claude API client |\n| **Google Generative AI** | ^0.21.0 | Gemini API client |\n| **MCP SDK** | ^1.29.0 | Model Context Protocol |\n| **node-pty** | ^1.1.0 | PTY terminal support |\n\n- **Built from scratch** on Electron + React + Monaco — not a VS Code fork. The architecture is intentionally lean: two processes (main + renderer), clear IPC boundaries, and no inherited extension ecosystem to maintain.\n- `**agentLoop.ts`** handles multi-round tool calls, partial JSON streaming, tool repair, and aborts.\n- **Structured assistant messages** are persisted locally and expanded to provider-native tool formats when needed.\n- **Local persistence** stores threads, settings, and plans as JSON / Markdown under user data.\n- `**gitService`** provides the Git layer used by the UI for status, diff, staging, commit, and push.\n- **LSP** integration uses TypeScript Language Server for in-editor intelligence.\n\n## Project Structure\n\n```text\nAsync/\n├── main-src/                  # Bundled -\u003e electron/main.bundle.cjs (Node / Electron main)\n│   ├── index.ts               # App entry: windows, userData, IPC registration\n│   ├── agent/                 # agentLoop.ts, toolExecutor.ts, agentTools.ts, toolApprovalGate.ts\n│   ├── llm/                   # OpenAI / Anthropic / Gemini adapters \u0026 streaming\n│   ├── lsp/                   # TypeScript LSP session\n│   ├── mcp/                   # Model Context Protocol integration\n│   ├── memdir/                # Memory directory management\n│   ├── bots/                  # IM bot controller, runtime, connectivity, platform adapters\n│   ├── ipc/register.ts        # ipcMain handlers (chat, threads, git, fs, agent, ...)\n│   ├── shell/                 # Shell command execution\n│   ├── threadStore.ts         # Persistent threads + messages (JSON)\n│   ├── settingsStore.ts       # settings.json\n│   ├── gitService.ts          # Porcelain status, diff previews, commit/push\n│   ├── workspace.ts           # Open-folder root \u0026 safe path resolution\n│   ├── workspaceFileIndex.ts  # File indexing for workspace\n│   ├── workspaceSemanticIndex.ts  # Semantic search indexing\n│   ├── workspaceSymbolIndex.ts    # Symbol indexing\n│   └── workspaceUsageStats.ts     # Workspace usage statistics\n├── src/                       # Vite + React renderer\n│   ├── App.tsx                # Shell layout, chat, composer modes, Git / explorer\n│   ├── AgentChatPanel.tsx     # Agent chat interface\n│   ├── AgentLeftSidebar.tsx   # Agent activity sidebar\n│   ├── AgentRightSidebar.tsx  # Agent tools and results\n│   ├── ChatComposer.tsx       # Message composer component\n│   ├── EditorMainPanel.tsx    # Monaco editor panel\n│   ├── SettingsPage.tsx       # Settings UI\n│   ├── SettingsBotsPanel.tsx  # IM bot integrations (Telegram / Slack / Discord / Feishu)\n│   ├── WorkspaceExplorer.tsx  # File explorer\n│   ├── hooks/                 # Custom React hooks (19 files)\n│   ├── i18n/                  # Locale messages (en / zh-CN)\n│   └── ...                    # Agent UI, Plan review, Monaco, terminal, ...\n├── electron/\n│   ├── main.bundle.cjs        # esbuild output (do not edit by hand)\n│   └── preload.cjs            # contextBridge -\u003e window.asyncShell\n├── docs/assets/               # Logo, screenshots\n├── scripts/\n│   └── export-app-icon.mjs    # Rasterize SVG -\u003e resources/icons/icon.png\n├── esbuild.main.mjs           # Builds main process\n├── vite.config.ts             # Renderer build\n└── package.json\n```\n\n## Data Storage\n\nDefault location under Electron's **`userData`** directory:\n\n- **`async/threads.json`**: threads and chat messages.\n- **`async/settings.json`**: model configuration, API keys, layout, agent options, and **`bots.integrations`** (Telegram / Slack / Discord / Feishu tokens, proxy URLs, allowlists, defaults).\n- **`.async/plans/`**: Markdown plan documents generated in Plan mode.\n\nThe renderer may use **localStorage** for lightweight UI state, but the authoritative data source for conversations is **`threads.json`**.\n\n---\n\n## Getting Started\n\n### Prerequisites\n\n- **Node.js** \u003e= 18\n- **npm** \u003e= 9\n- **Git** (recommended)\n\n### Install and Run\n\n1. **Clone the repository**:\n\n   ```bash\n   git clone https://github.com/ZYKJShadow/Async.git\n   cd Async\n   ```\n\n   If you prefer Gitee, you can also use:\n\n   ```bash\n   git clone https://gitee.com/shadowsocks_z/Async.git\n   cd Async\n   ```\n\n2. **Install dependencies**:\n\n   ```bash\n   npm install\n   ```\n\n3. **Build and launch the desktop app**:\n\n   ```bash\n   npm run desktop\n   ```\n\n   This will build both the main and renderer processes, then open the app with Electron.\n\n### Development\n\n```bash\nnpm run dev\n```\n\nTo open DevTools during development:\n\n```bash\nnpm run dev:debug\n```\n\n### Generate App Icon\n\n```bash\nnpm run icons\n```\n\nThis will rasterize `docs/assets/async-logo.svg` into `resources/icons/icon.png` and `public/favicon.png`.\n\n---\n\n## Acknowledgements\n\nWe are grateful to the open-source community and projects like Claude Code that helped demonstrate the power of agent-driven development — Async IDE builds on that momentum with its own take on transparent, local-first AI workflows.\n\n---\n\n## Community\n\nHave questions, ideas, or just want to chat with a community of developers?\n\n- **Forum**: [linux.do](https://linux.do/) — Join the discussion, share your setup, report issues, and stick around.\n\n---\n\n## License\n\nThis project is open-sourced under the [Apache License 2.0](./LICENSE).","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzykjshadow%2Fasync","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzykjshadow%2Fasync","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzykjshadow%2Fasync/lists"}