EchoSphere is a desktop AI coding workspace built with Electron, React, and TypeScript. It combines threaded chat, tool-enabled coding workflows, project-aware context, source control actions, and an integrated terminal in a single app.
EchoSphere is designed for day-to-day software development work, not just chat.
- Runs AI conversations as persistent threads with folder grouping.
- Supports provider-backed assistant streaming with tool execution.
- Lets you edit/revert user turns and restore workspace checkpoints during agent runs.
- Integrates Git status, diff, staging, commit, push, and PR-oriented flows.
- Includes an embedded terminal panel scoped by workspace.
- Persists workspace, thread, and UI settings across sessions.
- Threaded conversations with rename/delete and folder organization.
- Inline editing of previous user messages.
- Revert-to-checkpoint behavior tied to user turns.
- Streaming assistant output with tool call traces.
- Context usage estimation in composer.
- Codex (OAuth account flow)
- OpenAI (API key)
- Anthropic (API key)
- Google (API key)
- OpenAI-compatible endpoints (API key + base URL)
- Branch view/switch/create
- Diff panel for staged/unstaged changes
- Stage/unstage/discard file changes
- Commit modal with quick commit paths
- Push/PR-aware flows in the git services layer
- Embedded terminal panel powered by
node-pty - Per-workspace terminal open state and panel height persistence
- External link handling from terminal output
- Electron 30
- React 18 + TypeScript
- Vite 5
- Tailwind CSS 4
- node-pty for terminal sessions
- Multiple provider SDK integrations (
openai,@anthropic-ai/sdk,@google/genai)
- Node.js 20+ recommended
- npm 10+
- Windows, Linux, or macOS
npm install
npm run devThis starts the renderer and Electron main/preload through the Vite Electron plugin setup.
npm run build
npm run distPlatform-specific packaging scripts are also available:
npm run dist:winnpm run dist:linuxnpm run dist:mac
Use the automation wrappers to bump version, create a release commit, tag it, and push. Pushing the tag triggers the GitHub Actions release workflow.
Windows (PowerShell/CMD):
automations\release.bat
automations\release.bat patch
automations\release.bat minor
automations\release.bat 0.2.0macOS/Linux:
./automations/release.sh
./automations/release.sh patch
./automations/release.sh minor
./automations/release.sh 0.2.0Optional flags are forwarded to the release script:
--allow-dirtyto bypass clean-working-tree checks--remote <name>to push to a different git remote
Direct script usage (without commit/tag/push):
node ./scripts/release-version.mjs --bump patch
node ./scripts/release-version.mjs --version 0.2.0npm run typecheck
npm run lint
npm run test:toolsConfigure providers in the app Settings screen.
- Codex uses OAuth and stores auth material in
~/.codex/auth.json. - API-key providers are stored in
~/.echosphere/config/providers.json.
EchoSphere stores local state under your home directory:
~/.echosphere/history- conversation JSON files
messages.jsonlfolders.json- workspace checkpoint data
~/.echosphere/configsettings.jsonproviders.json
~/.codex/auth.json- Codex OAuth credentials
Files are written with restrictive permissions where supported (0o600 for sensitive auth/provider files).
src/
components/ React UI primitives and feature components
hooks/ Chat/runtime/state workflows
pages/ Top-level screens (Chat, Settings)
lib/ Shared utilities and UI/system helpers
types/ Shared app and IPC types
electron/
main.ts Electron app bootstrap + IPC handlers
preload.ts Renderer-safe API bridge
chat/ Provider runtime and streaming orchestration
git/ Git operations and commit/sync services
history/ Conversation/folder persistence
settings/ App settings persistence and bootstrap
terminal/ PTY session lifecycle
workspace/ Checkpoint creation/restore logic
tests/
openaiCompatible/ Tooling and runtime behavior tests
codex/ Codex adapter and git-related tests
- Renderer sends typed IPC requests through
window.echosphere*APIs. - Electron main routes requests to services (
chat,git,history,terminal,settings,workspace). - Chat provider adapters stream events back over
chat:stream:event. - Renderer hooks update thread state, messages, tool traces, and UI panels.
- Keep renderer logic in
src/and privileged IO/process logic inelectron/. - Prefer existing hooks/services patterns over adding parallel flows.
- Run typecheck, lint, and tool tests before submitting changes.