No description
  • JavaScript 79.5%
  • TypeScript 11.8%
  • Go 7.4%
  • CSS 0.5%
  • HTML 0.5%
  • Other 0.1%
Snider 28bfb08cdb
Some checks failed
security-scan.yml / feat(ide): rename Mantis/Tickets panel to Tasks + icon-only systray (push) Failing after 0s
test.yml / feat(ide): rename Mantis/Tickets panel to Tasks + icon-only systray (push) Failing after 0s
feat(ide): rename Mantis/Tickets panel to Tasks + icon-only systray
Two small UX fixes following the local-first tasks switch:

1. Panel rename to "Tasks". User-facing label, panel id, route, and
   keyboard shortcut binding all use 'tasks' now. The internal file
   path (pages/dev/mantis/mantis.component.ts) stays — that's a
   bigger refactor and the Lit migration will move it anyway.

   Touched: builtin-panels.ts (id+label+route), app.routes.ts (path),
   ide.component.ts (keyboard shortcut id list + command palette entry).

2. Systray icon-only on macOS. Snider 2026-05-11 screenshot showed
   "core-ide" text alongside the icon in the menu bar — macOS shows
   EITHER icon OR text. Setting TaskSetTrayLabel.Label="" yields
   icon-only, which is the intended shape for a status-bar resident
   app. Menu dropdown items still say "core-ide" (those are rows,
   not the bar label).

   Touched: pkg/server/gui.go.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-05-11 08:57:11 +01:00
.core chore: replace root Taskfile with .core/build.yaml 2026-03-06 14:46:02 +00:00
.forgejo/workflows ci: add Forgejo Actions test and security scan workflows 2026-02-23 03:28:13 +00:00
.github/workflows ci(public): add github actions workflow + README badge block 2026-04-30 15:25:13 +01:00
build feat(ide): mirror canonical lthn-desktop Angular shell 2026-05-09 09:18:42 +01:00
docs test(ide): drive the LIVE Wails window via Playwright + MCP bridge 2026-05-08 19:32:53 +01:00
external feat(ide): wire chat / TIM / p2p config through settings → BootstrapWithConfig 2026-05-09 18:43:32 +01:00
frontend feat(ide): rename Mantis/Tickets panel to Tasks + icon-only systray 2026-05-11 08:57:11 +01:00
go feat(ide): rename Mantis/Tickets panel to Tasks + icon-only systray 2026-05-11 08:57:11 +01:00
icons move 2026-02-16 13:55:59 +00:00
workspace/conventions feat: add IDE action dispatch and route router 2026-04-15 14:29:49 +01:00
.gitignore feat(ide): mirror canonical lthn-desktop Angular shell 2026-05-09 09:18:42 +01:00
.gitmodules chore(ide): restructure Go module under go/ + go.work + external/ submodules 2026-04-30 12:33:55 +01:00
.woodpecker.yml chore(ide): restructure Go module under go/ + go.work + external/ submodules 2026-04-30 12:33:55 +01:00
AGENTS.md docs: align core/ide identity with the new Lethean Desktop plan 2026-05-04 15:32:10 +01:00
CLAUDE.md docs: align core/ide identity with the new Lethean Desktop plan 2026-05-04 15:32:10 +01:00
go.work feat(ide): orchestration cockpit — 19 lanes wrap canonical core/* packages 2026-05-08 16:16:10 +01:00
go.work.sum feat(ide): /stream panel — wrap dappco.re/go/stream Hub 2026-05-08 16:31:44 +01:00
LICENCE chore: add EUPL-1.2 LICENCE file (UK English canonical) 2026-05-01 08:35:32 +01:00
README.md docs: align core/ide identity with the new Lethean Desktop plan 2026-05-04 15:32:10 +01:00
sonar-project.properties chore(ide): restructure Go module under go/ + go.work + external/ submodules 2026-04-30 12:33:55 +01:00
Taskfile.yml feat: update Wails to alpha 74, add iOS/Android/Docker build support 2026-03-14 13:10:55 +00:00
wails3-angular-template.jpg move 2026-02-16 13:55:59 +00:00

core/ide

Lethean Desktop's IDE — the compile target. Wails frontend + Go binary; mounts agent + scm + workspace. The default brand is Lethean (cool indigo, hue 270); Host UK customers can flip the brand at runtime via [data-brand="hostuk"].

What this binary IS

core/ide compiles to the binary that ships as Lethean Desktop — the native umbrella product across Darwin / Linux / Windows / iOS / iPadOS. The plan that defines what Lethean Desktop is, what it composes, how the platform profiles work, and where the design system comes from lives in the canonical plans tree:

  • Plan: plans/project/lthn/desktop/RFC.md — Lethean Desktop convergence + service composition + Vi Control Panel as the spine
  • Design system: plans/ops/hostuk/website/_design/lethean-3/ — Lethean-3 unified design drop, Wails Darwin / iOS / iPadOS native profiles, Vi mascot canon
  • Vi Control Panel pattern: the spine of the desktop shell (per the native handoff README in the design drop). Same logical component tree across web (control.host.uk.com) + native (this binary). Brand swap via [data-brand], platform swap via [data-platform].
  • Service composition rule: if a capability isn't defined in the plans tree, it isn't real. This binary owns the composition (which packages it pulls in, how they wire at boot, how Vi surfaces them); the implementation of each capability lives in its canonical home (blockchain, mining, encryption, etc.).

CI Quality Gate Coverage Security Rating Maintainability Rating Reliability Rating Code Smells Lines of Code Go Reference License: EUPL-1.2

What Does core-ide Actually Do

core-ide exposes the Core IDE runtime as MCP tools, named Core actions, and a local chat shell. It wires workspace inspection, OpenBrain memory, subagent relay, navigation, and package marketplace helpers into one process. It can run as stdio MCP for editor clients, HTTP MCP for local agents, or a Wails desktop shell. The GUI mode mounts chat and MCP against the same in-process executor so tool results match non-GUI mode. HTTP mode is local-only and bearer-token gated by default.

Connect It To Claude Code

{
  "mcpServers": {
    "core-ide": {
      "command": "core-ide",
      "args": ["--mcp"]
    }
  }
}

Running Modes

Mode Command Use case
stdio MCP core-ide --mcp Claude Code, Cursor, Continue
HTTP MCP core-ide --no-gui --http 127.0.0.1:9880 --token $TOK JetBrains, remote agents
GUI shell core-ide (default) local desktop with chat

Wildcard binds such as :9880 and 0.0.0.0:9880 are rejected; use an explicit loopback address.

Tools You Get

The 19-tool MCP/action parity check is enforced in pkg/server/integration_action_parity_test.go.

  • brain_recall
  • brain_remember
  • brain_forget
  • brain_list
  • brain_context
  • workspace_status
  • workspace_conventions
  • workspace_impact
  • workspace_scan
  • subagent_guide
  • subagent_ask
  • subagent_progress
  • subagent_watch (supports cursor, limit, nextCursor, and hasMore for paged event history)
  • subagent_answer
  • subagent_dispatch_guided
  • core_navigate
  • pkg_search
  • pkg_info
  • pkg_install

What's Hardened

  • HTTP mode refuses to start without a bearer token.
  • REST and MCP-over-HTTP requests require Authorization: Bearer <token>; missing or wrong tokens return 401.
  • HTTP and relay listeners must bind to localhost or a loopback IP; wildcard and externally routable addresses are rejected.
  • HTTP read-header, read, write, and idle timeouts are bounded.
  • HTTP headers are capped at 1 MiB and request bodies at 10 MiB.
  • The relay listener is only enabled when a relay path, loopback bind, and bearer token are configured.

Live OpenBrain Smoke

The live OpenBrain test is build-tagged and skipped by default:

CORE_BRAIN_INTEGRATION=1 CORE_BRAIN_KEY=$CORE_BRAIN_KEY \
  go test -tags integration -run TestLive ./pkg/brain/...

End-to-End Smoke

After building changes, run:

tests/smoke/run-end-to-end.sh

The script builds /tmp/core-ide, verifies stdio MCP exposes 19 tools, verifies HTTP bearer auth exposes the same 19 tools, calls workspace_status through the HTTP tool bridge, checks malformed tool input and schema validation failures, checks unauthenticated HTTP returns 401, and confirms HTTP mode without a token exits with status 1.