neuron-explorer
Qwen3.5‑4B 전용 조향형 뉴런 탐색기, 모든 MLP 뉴런을 밀어 결과를 보관·탐색
모든 에이전트가 공유하는 메모리와 GitHub 이슈와 같은 플랜보드가 있어, 여섯 번째 에이전트는 앞의 다섯이 이미 배제한 내용을 알게 됩니다
One shared memory across every agent, and a planboard that is your GitHub issues. Agent six begins knowing what agents one through five already ruled out.
개발 도구JavaScript · TypeScriptGitHub @currentbits온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
Solenta - local-first desktop control surface for coding agents (Claude Code, Codex, Kimi, Grok, OpenCode)
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Every agent starts where the last one stopped.
Shared local memory across Claude Code, Codex, Cursor, Kimi, Grok, and OpenCode.
Session ten does not re-learn what session one already ruled out.
New coding-agent sessions start blank. Context gets re-pasted across Claude Code,
Codex, and Grok. The tenth thread is not smarter than the first — just more
expensive.
A local memory server is auto-injected into every session. SQLite on disk, FTS +
vector search, HTTP + MCP, localhost-only, bearer-token gated. No per-agent
wiring.README 전문 보기 ↗New coding-agent sessions start blank. Context gets re-pasted across Claude Code, Codex, and Grok. The tenth thread is not smarter than the first — just more expensive.
A local memory server is auto-injected into every session. SQLite on disk, FTS + vector search, HTTP + MCP, localhost-only, bearer-token gated. No per-agent wiring.
Claude Code · thread 1
Ruled out a rewrite of auth. Cookie session stays.
Refresh lives in src/lib/auth.ts.
Codex · thread 3
The 401 retry is in src/lib/api.ts.
Moving it breaks the refresh path.
Grok · thread 6
Starts knowing both. Adds the expiry skew
and leaves the rest alone.
Memory is why Solenta exists. The rest is so you can run the agents that write it.
gh auth) before the header offers Create PR. Oversized PRs (default
400 lines) are refused; the header offers a stacked split. Fork and archived
worktrees are garbage-collected on their own; the branch always survives.
Merge conflicts get a one-click "let the agent resolve it", and an open PR
can be checked out into its own worktree. Jujutsu (jj) projects work too.
Files or single hunks are staged with a checkbox before commit or merge, and
a click on a diff line number leaves an inline comment that goes back to the
agent as a follow-up prompt. PRs can be reviewed in the app (viewed marks,
stacked-PR merge), and GitLab merge requests work alongside GitHub PRs.cd and exports persist), and an embedded loopback-only browser on your dev
server. Screenshot the page into the composer, or let the agent navigate,
click, type and screenshot it through the preview tool, read a page
snapshot and console/network diagnostics, and switch viewport presets.
Inspect picks an element and attaches it as a composer chip. The terminal
has Find, Clear, Copy and send-selection-to-composer.issue_create, issue_list,
issue_set_plan, issue_complete, issue_comment, and issue_label (omitted when
the origin is not GitHub), with auto-dispatch from plan:todo, a
review-load meter on the open PR queue, and issues that close themselves
when the thread's work lands./handoff, /advisor, /committee, a subagent model pool, and
coder-threads host tools so an agent can archive, settle, stop, rename,
merge, or open a PR.[!IMPORTANT] Solenta drives CLIs; it doesn't ship them. Install and sign into at least one provider first — Solenta finds them on your
PATH.
Provider Install Sign in Claude Code npm i -g @anthropic-ai/claude-codeclaude→/loginCodex npm i -g @openai/codexcodex loginCursor curl https://cursor.com/install -fsS | bashcursor-agent loginGrok see x.ai/cli grok loginOpenCode npm i -g opencode-aiopencode auth loginKimi Code pip install kimi-clikimi→ follow prompts
Grab an archive from the latest release:
Solenta-<v>-macos-arm64.zip. Unzip, move
Solenta.app to /Applications, double-click. Signed with a Developer ID and
notarized by Apple, so Gatekeeper opens it like any other app.Solenta-<v>-win32-x64.zip. Unzip anywhere, run
solenta.exe. Unsigned, so SmartScreen asks once. There is no installer
and no winget package; see the note in scripts/package-cross.sh.Solenta-<v>-linux-x64.tar.gz. Extract, run ./solenta.Builds are stamped with a channel. prod follows the newest normal release; nightly follows the newest prerelease and never migrates itself onto prod. On macOS the app downloads and swaps itself in place. On Windows and Linux it downloads beside the portable folder and swaps after you Restart (the running files stay locked until then). A window that reloads into a new renderer against an old preload hard-blocks until you Restart. Builds from a dev tree carry no stamp and never self-update.
Nightly ships as Solenta Nightly.app (com.willem.solenta.nightly,
solenta-nightly on linux/win) so it is tellable apart from a prod install at
launch time. Both channels share one userData directory — the bundle is
renamed, the app name inside it is not.
~/solenta); an older
one gets Update. Its agents and their sign-ins are listed after connecting.~/solenta/solenta --headless --no-sandbox
(implies --serve-web; systemd unit in site/docs.html#headless)./Applications/Solenta.app/Contents/MacOS/Solenta --serve-web # 127.0.0.1:4620
/Applications/Solenta.app/Contents/MacOS/Solenta --serve-web=4700 --serve-host 0.0.0.0
Starting from a terminal prints the address, token, a sign-in link and a QR
code (first line solenta-web: token …). The token is persisted at
<userData>/web-token, written whenever Solenta Web starts, and is what
Connect reads over SSH. If Solenta is already running, the flag turns Solenta
Web on there instead of starting a second copy. There is no TLS on the LAN
bind.
A remote project is different from Connect: it keeps this window and runs one repo's git and agent CLIs on the remote host.
Electron main owns the agents and the disk; the renderer is a React app; preload
exposes a typed window.coder. Providers are a data-driven registry
(electron/providers.js), each spawned and parsed by an adapter, and the runner
keys every event to a run id so a stopped run can never write into a newer one.
| Layer | Path |
|---|---|
| Main (window, store, runner, memory supervisor) | electron/main.js |
| IPC bridges | electron/ipc.js, electron/preload.js |
| Services (projects, threads, settings, spend gate) | electron/services.js |
| Renderer | src/ |
| Workflow engine (pure) | core/ |
| Memory server (MCP + HTTP) | memory-server/ |
Full detail: docs/ARCHITECTURE.md.
npm install
cd core && npm install && npm run build && cd ..
npm install --prefix memory-server # required for MCP tools and Codex input validation
npm run dev # Vite (HMR) + Electron against the real main process
npm run dev is the loop to develop in: the window loads the Vite dev server,
so every renderer edit hot-reloads while electron/ runs for real — real
services, real git, real providers, real store.
To check a production bundle instead: npx vite build && CODER_PROD=1 npx electron .
npm run dev:browser opens the renderer in a browser with no Electron, backed
by the fixtures in src/devCoder.ts (demo and trailer captures). Fixtures are
not the app: they store what you give them and return something plausible. Do
not read behaviour off them, and never fix a bug there.
npm test # all four suites, same as CI (.github/workflows/test.yml)
npm run test:core # workflow engine — also builds core/dist, which electron needs
npm run test:renderer # renderer
npm run test:electron # electron main
npm run test:memory # memory server (needs `npm ci --prefix memory-server`)
npm run acceptance stays manual: one real claude turn, not part of CI.
bash scripts/package-app.sh builds out/Solenta.app; scripts/publish-release.sh prod|nightly builds every platform, notarizes the mac bundle and cuts the
GitHub release. Cut both channels from one throwaway detached worktree at
~/code/coder-release (never the main checkout at ~/code/coder, never the
named leftover ~/code/coder-release-build). After publish, always
git worktree remove ~/code/coder-release. The header of
scripts/publish-release.sh is the operator checklist.
Signing happens in scripts/codesign-app.sh (hardened runtime, entitlements in
scripts/entitlements.plist) and reads credentials from the environment only:
| Var | Purpose |
|---|---|
CODESIGN_IDENTITY | Full identity string. Auto-detected from the keychain when unset. |
APPLE_KEYCHAIN_PROFILE | notarytool profile name. Preferred over the three below. |
APPLE_ID / APPLE_TEAM_ID / APPLE_APP_PASSWORD | Fallback. The password is an app-specific password from appleid.apple.com, never the account password. |
Store the profile once instead of exporting a password per shell:
xcrun notarytool store-credentials solenta \
--apple-id [email protected] --team-id TEAMID --password <app-specific-password>
export APPLE_KEYCHAIN_PROFILE=solenta
Local builds sign but do not notarize (a multi-minute round trip to Apple that
a bundle which never leaves this machine does not need). Only a --tag build —
what publish-release.sh produces — notarizes and staples. Without a Developer
ID cert a local build still succeeds, unsigned, with a loud warning; a release
build fails instead of quietly shipping something Gatekeeper blocks.
Env: CODER_CLAUDE_BIN, CODER_CODEX_BIN, CODER_KIMI_BIN,
CODER_GROK_BIN, CODER_OPENCODE_BIN (CLI paths) · CODER_SIMULATE=1 (fake
provider) · CODER_MEMORY_CONFIG / CODER_MEMORY_ENTRY / CODER_NODE_BIN
(memory server) · CODER_PROD=1 (load dist/) · VITE_DEV_SERVER_URL
(default http://localhost:5173).
npm allow-scripts can skip Electron's postinstall, leaving a stub dist with no
path.txt ("Electron failed to install correctly"). Repair from the cache —
match the version to node_modules/electron/package.json:
ditto -x -k ~/Library/Caches/electron/*/electron-v*-darwin-arm64.zip \
node_modules/electron/dist
printf 'Electron.app/Contents/MacOS/Electron' > node_modules/electron/path.txt
The root package.json already allows scripts for the pinned Electron version.
PATH
(with per-provider install hints), adds the first project, and sets the
defaults, then a short tour of the panes. Skippable, shown once./btw — a side question on the same thread that does not pause, steer,
or queue behind the live run./feedback — send a note straight to the Solenta team from the composer.
The text goes to us, never to the model, and never occupies the live turn.DO_NOT_TRACK=1 or SOLENTA_TELEMETRY=0.plan:todo and auto-dispatch.Early and moving fast. Expect bugs and rough edges — issues are welcome, and small PRs more so than large ones.
docs/ARCHITECTURE.md — process split, providers, runner, memory, storedocs/ISSUES.md — symptom / cause / fix logSolenta's design and some of its feature ideas are inspired by t3code. No code from that project is used; everything here is original work under the MIT license.
xcrun mcpbridge pairing in Settings, Skills & MCP.needs:);
converge appends missing work back onto the file./ commands — browse and edit the SKILL.md files your
agents can reach. The composer / palette also runs the underlying CLI's
own skills and custom commands.dev script from the app and get the URL.--serve-web serves the same UI over HTTP + WebSocket.