atoo-studio 0.0.1 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.github.md +328 -0
- package/README.md +118 -0
- package/README.npm.md +118 -0
- package/bin/atoo-studio.js +90 -0
- package/dist/src/agents/claude-code-terminal/adapter.d.ts +42 -0
- package/dist/src/agents/claude-code-terminal/adapter.js +166 -0
- package/dist/src/agents/claude-code-terminal/index.d.ts +13 -0
- package/dist/src/agents/claude-code-terminal/index.js +45 -0
- package/dist/src/agents/claude-code-terminal/spawner.d.ts +9 -0
- package/dist/src/agents/claude-code-terminal/spawner.js +37 -0
- package/dist/src/agents/claude-code-terminal-chatro/adapter.d.ts +51 -0
- package/dist/src/agents/claude-code-terminal-chatro/adapter.js +301 -0
- package/dist/src/agents/claude-code-terminal-chatro/index.d.ts +13 -0
- package/dist/src/agents/claude-code-terminal-chatro/index.js +45 -0
- package/dist/src/agents/claude-code-terminal-chatro/jsonl-watcher.d.ts +67 -0
- package/dist/src/agents/claude-code-terminal-chatro/jsonl-watcher.js +431 -0
- package/dist/src/agents/claude-code-terminal-chatro/spawner.d.ts +9 -0
- package/dist/src/agents/claude-code-terminal-chatro/spawner.js +37 -0
- package/dist/src/agents/codex-terminal/adapter.d.ts +40 -0
- package/dist/src/agents/codex-terminal/adapter.js +160 -0
- package/dist/src/agents/codex-terminal/index.d.ts +13 -0
- package/dist/src/agents/codex-terminal/index.js +47 -0
- package/dist/src/agents/codex-terminal/spawner.d.ts +9 -0
- package/dist/src/agents/codex-terminal/spawner.js +56 -0
- package/dist/src/agents/codex-terminal-chatro/adapter.d.ts +58 -0
- package/dist/src/agents/codex-terminal-chatro/adapter.js +266 -0
- package/dist/src/agents/codex-terminal-chatro/index.d.ts +13 -0
- package/dist/src/agents/codex-terminal-chatro/index.js +50 -0
- package/dist/src/agents/codex-terminal-chatro/jsonl-watcher.d.ts +36 -0
- package/dist/src/agents/codex-terminal-chatro/jsonl-watcher.js +205 -0
- package/dist/src/agents/codex-terminal-chatro/spawner.d.ts +9 -0
- package/dist/src/agents/codex-terminal-chatro/spawner.js +57 -0
- package/dist/src/agents/lib/chain-builder.d.ts +21 -0
- package/dist/src/agents/lib/chain-builder.js +139 -0
- package/dist/src/agents/lib/claude/fs-sessions.d.ts +31 -0
- package/dist/src/agents/lib/claude/fs-sessions.js +329 -0
- package/dist/src/agents/lib/claude/jsonl-writer.d.ts +32 -0
- package/dist/src/agents/lib/claude/jsonl-writer.js +342 -0
- package/dist/src/agents/lib/claude/workspace-trust.d.ts +1 -0
- package/dist/src/agents/lib/claude/workspace-trust.js +29 -0
- package/dist/src/agents/lib/codex/fs-sessions.d.ts +34 -0
- package/dist/src/agents/lib/codex/fs-sessions.js +255 -0
- package/dist/src/agents/lib/codex/jsonl-mapper.d.ts +11 -0
- package/dist/src/agents/lib/codex/jsonl-mapper.js +154 -0
- package/dist/src/agents/lib/codex/jsonl-writer.d.ts +8 -0
- package/dist/src/agents/lib/codex/jsonl-writer.js +440 -0
- package/dist/src/agents/lib/fs-tracking.d.ts +36 -0
- package/dist/src/agents/lib/fs-tracking.js +109 -0
- package/dist/src/agents/lib/pty-activity-tracker.d.ts +37 -0
- package/dist/src/agents/lib/pty-activity-tracker.js +105 -0
- package/dist/src/agents/lib/session-id-utils.d.ts +46 -0
- package/dist/src/agents/lib/session-id-utils.js +147 -0
- package/dist/src/agents/lib/session-precreate.d.ts +17 -0
- package/dist/src/agents/lib/session-precreate.js +177 -0
- package/dist/src/agents/registry.d.ts +72 -0
- package/dist/src/agents/registry.js +337 -0
- package/dist/src/agents/types.d.ts +135 -0
- package/dist/src/agents/types.js +1 -0
- package/dist/src/auth/crypto-key.d.ts +6 -0
- package/dist/src/auth/crypto-key.js +45 -0
- package/dist/src/auth/middleware.d.ts +18 -0
- package/dist/src/auth/middleware.js +54 -0
- package/dist/src/auth/password.d.ts +2 -0
- package/dist/src/auth/password.js +12 -0
- package/dist/src/auth/session.d.ts +10 -0
- package/dist/src/auth/session.js +33 -0
- package/dist/src/auth/totp.d.ts +12 -0
- package/dist/src/auth/totp.js +61 -0
- package/dist/src/auth/webauthn.d.ts +6 -0
- package/dist/src/auth/webauthn.js +117 -0
- package/dist/src/config.d.ts +9 -0
- package/dist/src/config.js +15 -0
- package/dist/src/database/connection-manager.d.ts +25 -0
- package/dist/src/database/connection-manager.js +211 -0
- package/dist/src/database/discovery/container.d.ts +6 -0
- package/dist/src/database/discovery/container.js +226 -0
- package/dist/src/database/discovery/env-parser.d.ts +9 -0
- package/dist/src/database/discovery/env-parser.js +525 -0
- package/dist/src/database/discovery/local-files.d.ts +6 -0
- package/dist/src/database/discovery/local-files.js +58 -0
- package/dist/src/database/discovery/port-scan.d.ts +7 -0
- package/dist/src/database/discovery/port-scan.js +61 -0
- package/dist/src/database/drivers/cassandra.d.ts +12 -0
- package/dist/src/database/drivers/cassandra.js +91 -0
- package/dist/src/database/drivers/clickhouse.d.ts +11 -0
- package/dist/src/database/drivers/clickhouse.js +127 -0
- package/dist/src/database/drivers/elasticsearch.d.ts +12 -0
- package/dist/src/database/drivers/elasticsearch.js +169 -0
- package/dist/src/database/drivers/influxdb.d.ts +14 -0
- package/dist/src/database/drivers/influxdb.js +194 -0
- package/dist/src/database/drivers/memcached.d.ts +11 -0
- package/dist/src/database/drivers/memcached.js +117 -0
- package/dist/src/database/drivers/mongodb.d.ts +12 -0
- package/dist/src/database/drivers/mongodb.js +128 -0
- package/dist/src/database/drivers/mysql.d.ts +11 -0
- package/dist/src/database/drivers/mysql.js +112 -0
- package/dist/src/database/drivers/neo4j.d.ts +11 -0
- package/dist/src/database/drivers/neo4j.js +158 -0
- package/dist/src/database/drivers/postgresql.d.ts +11 -0
- package/dist/src/database/drivers/postgresql.js +133 -0
- package/dist/src/database/drivers/redis.d.ts +11 -0
- package/dist/src/database/drivers/redis.js +91 -0
- package/dist/src/database/drivers/sqlite.d.ts +10 -0
- package/dist/src/database/drivers/sqlite.js +100 -0
- package/dist/src/database/query-stream.d.ts +5 -0
- package/dist/src/database/query-stream.js +75 -0
- package/dist/src/database/types.d.ts +71 -0
- package/dist/src/database/types.js +1 -0
- package/dist/src/events/index.d.ts +3 -0
- package/dist/src/events/index.js +3 -0
- package/dist/src/events/types.d.ts +214 -0
- package/dist/src/events/types.js +22 -0
- package/dist/src/events/wire.d.ts +114 -0
- package/dist/src/events/wire.js +296 -0
- package/dist/src/fs-monitor-types.d.ts +24 -0
- package/dist/src/fs-monitor-types.js +1 -0
- package/dist/src/fs-monitor.d.ts +80 -0
- package/dist/src/fs-monitor.js +637 -0
- package/dist/src/handlers/auth.d.ts +1 -0
- package/dist/src/handlers/auth.js +170 -0
- package/dist/src/handlers/changes.d.ts +1 -0
- package/dist/src/handlers/changes.js +203 -0
- package/dist/src/handlers/containers.d.ts +12 -0
- package/dist/src/handlers/containers.js +379 -0
- package/dist/src/handlers/databases.d.ts +3 -0
- package/dist/src/handlers/databases.js +327 -0
- package/dist/src/handlers/environments.d.ts +3 -0
- package/dist/src/handlers/environments.js +286 -0
- package/dist/src/handlers/github.d.ts +1 -0
- package/dist/src/handlers/github.js +153 -0
- package/dist/src/handlers/projects.d.ts +1 -0
- package/dist/src/handlers/projects.js +895 -0
- package/dist/src/handlers/ssh.d.ts +1 -0
- package/dist/src/handlers/ssh.js +162 -0
- package/dist/src/handlers/users.d.ts +1 -0
- package/dist/src/handlers/users.js +195 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +228 -0
- package/dist/src/mcp/config.d.ts +32 -0
- package/dist/src/mcp/config.js +227 -0
- package/dist/src/mcp/server.d.ts +1 -0
- package/dist/src/mcp/server.js +574 -0
- package/dist/src/serial/cuse-device.d.ts +19 -0
- package/dist/src/serial/cuse-device.js +260 -0
- package/dist/src/serial/manager.d.ts +63 -0
- package/dist/src/serial/manager.js +206 -0
- package/dist/src/serial/pty-pair.d.ts +16 -0
- package/dist/src/serial/pty-pair.js +68 -0
- package/dist/src/services/fs-browser.d.ts +14 -0
- package/dist/src/services/fs-browser.js +98 -0
- package/dist/src/services/git-ops.d.ts +86 -0
- package/dist/src/services/git-ops.js +317 -0
- package/dist/src/services/github-ops.d.ts +104 -0
- package/dist/src/services/github-ops.js +192 -0
- package/dist/src/services/obfuscation.d.ts +2 -0
- package/dist/src/services/obfuscation.js +16 -0
- package/dist/src/services/preview/headless-backend.d.ts +62 -0
- package/dist/src/services/preview/headless-backend.js +698 -0
- package/dist/src/services/preview/injected-scripts.d.ts +9 -0
- package/dist/src/services/preview/injected-scripts.js +232 -0
- package/dist/src/services/preview/preview-backend.d.ts +92 -0
- package/dist/src/services/preview/preview-backend.js +15 -0
- package/dist/src/services/preview/universal-setter.d.ts +7 -0
- package/dist/src/services/preview/universal-setter.js +46 -0
- package/dist/src/services/preview-manager.d.ts +50 -0
- package/dist/src/services/preview-manager.js +216 -0
- package/dist/src/services/project-watcher.d.ts +6 -0
- package/dist/src/services/project-watcher.js +307 -0
- package/dist/src/services/remote-fs-browser.d.ts +11 -0
- package/dist/src/services/remote-fs-browser.js +50 -0
- package/dist/src/services/remote-git-ops.d.ts +75 -0
- package/dist/src/services/remote-git-ops.js +218 -0
- package/dist/src/services/session-search.d.ts +56 -0
- package/dist/src/services/session-search.js +303 -0
- package/dist/src/services/ssh-manager.d.ts +44 -0
- package/dist/src/services/ssh-manager.js +358 -0
- package/dist/src/session-writer.d.ts +9 -0
- package/dist/src/session-writer.js +66 -0
- package/dist/src/spawner.d.ts +56 -0
- package/dist/src/spawner.js +135 -0
- package/dist/src/state/db.d.ts +214 -0
- package/dist/src/state/db.js +897 -0
- package/dist/src/state/store.d.ts +37 -0
- package/dist/src/state/store.js +108 -0
- package/dist/src/state/types.d.ts +13 -0
- package/dist/src/state/types.js +1 -0
- package/dist/src/web/devtools-proxy.d.ts +7 -0
- package/dist/src/web/devtools-proxy.js +176 -0
- package/dist/src/web/port-proxy.d.ts +15 -0
- package/dist/src/web/port-proxy.js +124 -0
- package/dist/src/web/preview-ws.d.ts +5 -0
- package/dist/src/web/preview-ws.js +207 -0
- package/dist/src/web/server.d.ts +6 -0
- package/dist/src/web/server.js +1694 -0
- package/dist/src/ws/agent-ws.d.ts +5 -0
- package/dist/src/ws/agent-ws.js +93 -0
- package/frontend/dist/assets/_basePickBy-BP5pqc-z.js +1 -0
- package/frontend/dist/assets/_baseUniq-C8JXpw9D.js +1 -0
- package/frontend/dist/assets/_createAssigner-ByDUqGii.js +1 -0
- package/frontend/dist/assets/abap-DuT-3z4x.js +1 -0
- package/frontend/dist/assets/addon-fit-CxQet2ja.js +1 -0
- package/frontend/dist/assets/addon-web-links-D_jRkPIl.js +1 -0
- package/frontend/dist/assets/apex-B-em86xX.js +1 -0
- package/frontend/dist/assets/api-SUPuHhSY.js +2 -0
- package/frontend/dist/assets/arc-Z0_eVteO.js +1 -0
- package/frontend/dist/assets/architecture-PBZL5I3N-Cm0ChR6S.js +1 -0
- package/frontend/dist/assets/architectureDiagram-2XIMDMQ5-C2jiEUuG.js +36 -0
- package/frontend/dist/assets/array-CwG8vNfn.js +1 -0
- package/frontend/dist/assets/auth-store-R7eW5SVu.js +1 -0
- package/frontend/dist/assets/azcli-Bg9wQloi.js +1 -0
- package/frontend/dist/assets/bat-BM46z99L.js +1 -0
- package/frontend/dist/assets/bicep-DcBsJUfh.js +2 -0
- package/frontend/dist/assets/blockDiagram-WCTKOSBZ-BwHBv5v8.js +132 -0
- package/frontend/dist/assets/c4Diagram-IC4MRINW-Ct7LjWFQ.js +10 -0
- package/frontend/dist/assets/cameligo-zw7JTtim.js +1 -0
- package/frontend/dist/assets/channel-ClCsE6HN.js +1 -0
- package/frontend/dist/assets/chunk-4BX2VUAB-zZ6P90VO.js +1 -0
- package/frontend/dist/assets/chunk-55IACEB6-DXllTDQl.js +1 -0
- package/frontend/dist/assets/chunk-7E7YKBS2-D0o-krG6.js +1 -0
- package/frontend/dist/assets/chunk-7R4GIKGN-Csst1274.js +80 -0
- package/frontend/dist/assets/chunk-C72U2L5F-BJHsZQ3s.js +1 -0
- package/frontend/dist/assets/chunk-CFjPhJqf.js +1 -0
- package/frontend/dist/assets/chunk-EGIJ26TM-IvGKaOpK.js +1 -0
- package/frontend/dist/assets/chunk-FMBD7UC4-DVR34RNb.js +15 -0
- package/frontend/dist/assets/chunk-GEFDOKGD-CnmN6cC8.js +2 -0
- package/frontend/dist/assets/chunk-JSJVCQXG-CWxHBzeJ.js +1 -0
- package/frontend/dist/assets/chunk-KX2RTZJC-DkRk56s7.js +1 -0
- package/frontend/dist/assets/chunk-KYZI473N-DCCsG2dK.js +53 -0
- package/frontend/dist/assets/chunk-L3YUKLVL-kj7gDLqb.js +1 -0
- package/frontend/dist/assets/chunk-MX3YWQON-OUdzv5sZ.js +1 -0
- package/frontend/dist/assets/chunk-NQ4KR5QH-BPLxW_0V.js +220 -0
- package/frontend/dist/assets/chunk-O4XLMI2P-BMLK6_ib.js +7 -0
- package/frontend/dist/assets/chunk-OZEHJAEY-BvePHeeD.js +1 -0
- package/frontend/dist/assets/chunk-PQ6SQG4A-evVHD3KM.js +1 -0
- package/frontend/dist/assets/chunk-PU5JKC2W-DPFTYuvl.js +70 -0
- package/frontend/dist/assets/chunk-QZHKN3VN-JRdddPvu.js +1 -0
- package/frontend/dist/assets/chunk-R5LLSJPH-N_kzZPYS.js +1 -0
- package/frontend/dist/assets/chunk-WL4C6EOR-CzQbiss9.js +189 -0
- package/frontend/dist/assets/chunk-XIRO2GV7-Z9gqatVF.js +1 -0
- package/frontend/dist/assets/chunk-XZSTWKYB-BddvqxDB.js +94 -0
- package/frontend/dist/assets/chunk-YBOYWFTD-BgKO1qAJ.js +1 -0
- package/frontend/dist/assets/classDiagram-VBA2DB6C-BUysImLJ.js +1 -0
- package/frontend/dist/assets/classDiagram-v2-RAHNMMFH-os3tUcXP.js +1 -0
- package/frontend/dist/assets/clojure-FspFoNNQ.js +1 -0
- package/frontend/dist/assets/clone-CjYMfESW.js +1 -0
- package/frontend/dist/assets/codicon-ngg6Pgfi.ttf +0 -0
- package/frontend/dist/assets/coffee-13n8Bk2W.js +1 -0
- package/frontend/dist/assets/cose-bilkent-S5V4N54A-zUOWQqLe.js +1 -0
- package/frontend/dist/assets/cpp-BVm2xGEs.js +1 -0
- package/frontend/dist/assets/csharp-D2kAWmUm.js +1 -0
- package/frontend/dist/assets/csp-Ezvgpf0e.js +1 -0
- package/frontend/dist/assets/css-CYxRwcFy.js +3 -0
- package/frontend/dist/assets/css.worker-Cd5h-ZOL.js +89 -0
- package/frontend/dist/assets/cssMode-CrXej49V.js +1 -0
- package/frontend/dist/assets/cypher-jg3SGErc.js +1 -0
- package/frontend/dist/assets/cytoscape.esm-kyyvzxNV.js +321 -0
- package/frontend/dist/assets/dagre-KLK3FWXG-BGhxKTrS.js +4 -0
- package/frontend/dist/assets/dagre-oxy3nsFM.js +1 -0
- package/frontend/dist/assets/dart-179jqhK4.js +1 -0
- package/frontend/dist/assets/defaultLocale-Dda4OpKy.js +1 -0
- package/frontend/dist/assets/diagram-E7M64L7V-DKevl205.js +24 -0
- package/frontend/dist/assets/diagram-IFDJBPK2-KQaESDDI.js +43 -0
- package/frontend/dist/assets/diagram-P4PSJMXO-BrpIvkQv.js +24 -0
- package/frontend/dist/assets/dist-CU_Nb1G5.js +1 -0
- package/frontend/dist/assets/dockerfile-CIAtSGxS.js +1 -0
- package/frontend/dist/assets/ecl-CGVKfDxD.js +1 -0
- package/frontend/dist/assets/editor-Br_kD0ds.css +1 -0
- package/frontend/dist/assets/editor.api2-YXkDn0Gm.js +872 -0
- package/frontend/dist/assets/editor.main-fBaXZjJ0.js +6 -0
- package/frontend/dist/assets/elixir-BZ-6w0y3.js +1 -0
- package/frontend/dist/assets/erDiagram-INFDFZHY-B_SO_zDO.js +70 -0
- package/frontend/dist/assets/flow9-CVuOjTMv.js +1 -0
- package/frontend/dist/assets/flowDiagram-PKNHOUZH-vCrwouWP.js +162 -0
- package/frontend/dist/assets/freemarker2-DM-pztJU.js +3 -0
- package/frontend/dist/assets/fsharp-q0pGJYr6.js +1 -0
- package/frontend/dist/assets/ganttDiagram-A5KZAMGK-Dnx3szD9.js +292 -0
- package/frontend/dist/assets/gitGraph-HDMCJU4V-CAmchn0S.js +1 -0
- package/frontend/dist/assets/gitGraphDiagram-K3NZZRJ6-BjsXnLlp.js +65 -0
- package/frontend/dist/assets/go-dzSPfdEO.js +1 -0
- package/frontend/dist/assets/graphlib-CXuPQLPN.js +1 -0
- package/frontend/dist/assets/graphql-CG4OUoEV.js +1 -0
- package/frontend/dist/assets/handlebars-BbK53Vec.js +1 -0
- package/frontend/dist/assets/hcl-Cy14JPk3.js +1 -0
- package/frontend/dist/assets/html-DYtTQNOG.js +1 -0
- package/frontend/dist/assets/html.worker-BjVEKLoU.js +502 -0
- package/frontend/dist/assets/htmlMode-C6GTouth.js +1 -0
- package/frontend/dist/assets/index-CJrelq5A.css +1 -0
- package/frontend/dist/assets/index-CvDkr5VR.js +157 -0
- package/frontend/dist/assets/info-3K5VOQVL-w0fuf3Vz.js +1 -0
- package/frontend/dist/assets/infoDiagram-LFFYTUFH-CyQQoy2i.js +2 -0
- package/frontend/dist/assets/ini-Pbg8HGVD.js +1 -0
- package/frontend/dist/assets/init-D6KNwrax.js +1 -0
- package/frontend/dist/assets/ishikawaDiagram-PHBUUO56-DyeLXKpu.js +70 -0
- package/frontend/dist/assets/java-BmVu6Qrl.js +1 -0
- package/frontend/dist/assets/javascript-PbfQEdcJ.js +1 -0
- package/frontend/dist/assets/journeyDiagram-4ABVD52K-4HyMd4R2.js +139 -0
- package/frontend/dist/assets/json.worker-DqU5Wxnl.js +58 -0
- package/frontend/dist/assets/jsonMode-CASsGppE.js +7 -0
- package/frontend/dist/assets/julia-3cGnieBq.js +1 -0
- package/frontend/dist/assets/kanban-definition-K7BYSVSG-BktdlC34.js +89 -0
- package/frontend/dist/assets/katex-CEw3x5bf.js +261 -0
- package/frontend/dist/assets/kotlin-BuWkVcfV.js +1 -0
- package/frontend/dist/assets/less-CJ_VPy2C.js +2 -0
- package/frontend/dist/assets/lexon-BygAuZPu.js +1 -0
- package/frontend/dist/assets/line-CA_wh_TY.js +1 -0
- package/frontend/dist/assets/linear-BAcLW45z.js +1 -0
- package/frontend/dist/assets/liquid-kz84dle6.js +1 -0
- package/frontend/dist/assets/lspLanguageFeatures-C7hAHFn1.js +4 -0
- package/frontend/dist/assets/lua-C8Xs3dCx.js +1 -0
- package/frontend/dist/assets/m3-DTJeKBk4.js +1 -0
- package/frontend/dist/assets/markdown-QCgx8JqZ.js +1 -0
- package/frontend/dist/assets/math-D0YcMJAn.js +1 -0
- package/frontend/dist/assets/mdx-yRw0ap-E.js +1 -0
- package/frontend/dist/assets/mermaid-parser.core-CLD6OoQN.js +4 -0
- package/frontend/dist/assets/mindmap-definition-YRQLILUH-WGZwfAjA.js +68 -0
- package/frontend/dist/assets/mips-DopWaYgE.js +1 -0
- package/frontend/dist/assets/monaco.contribution-DeY0Qei-.js +2 -0
- package/frontend/dist/assets/msdax-BDis4ARV.js +1 -0
- package/frontend/dist/assets/mysql-BV6MLsOI.js +1 -0
- package/frontend/dist/assets/objective-c-B1UuzKs6.js +1 -0
- package/frontend/dist/assets/ordinal-jM7S0YHN.js +1 -0
- package/frontend/dist/assets/packet-RMMSAZCW-BziBZLJ6.js +1 -0
- package/frontend/dist/assets/pascal-BkvESCrc.js +1 -0
- package/frontend/dist/assets/pascaligo-lTy0kZYr.js +1 -0
- package/frontend/dist/assets/path-DNPd7Py7.js +1 -0
- package/frontend/dist/assets/perl-CrtUPXLV.js +1 -0
- package/frontend/dist/assets/pgsql-B9IbNWx2.js +1 -0
- package/frontend/dist/assets/php-CXvQBY2p.js +1 -0
- package/frontend/dist/assets/pie-UPGHQEXC-vv-0ECOa.js +1 -0
- package/frontend/dist/assets/pieDiagram-SKSYHLDU-8bBf71Ue.js +30 -0
- package/frontend/dist/assets/pla-DxBxuqWu.js +1 -0
- package/frontend/dist/assets/postiats-OkEuT5YF.js +1 -0
- package/frontend/dist/assets/powerquery-CMx5Tq4K.js +1 -0
- package/frontend/dist/assets/powershell-CstRxrEc.js +1 -0
- package/frontend/dist/assets/preload-helper-D4M6sveU.js +1 -0
- package/frontend/dist/assets/protobuf-Bx0Z-uRj.js +2 -0
- package/frontend/dist/assets/pug--W8vanWl.js +1 -0
- package/frontend/dist/assets/python-DA0rnlw3.js +1 -0
- package/frontend/dist/assets/qsharp-CRtr0YbN.js +1 -0
- package/frontend/dist/assets/quadrantDiagram-337W2JSQ-B3n3IUhC.js +7 -0
- package/frontend/dist/assets/r-C6E1d6iv.js +1 -0
- package/frontend/dist/assets/radar-KQ55EAFF-fJ4cC2Bt.js +1 -0
- package/frontend/dist/assets/razor-yd73uata.js +1 -0
- package/frontend/dist/assets/redis-Dx13voP3.js +1 -0
- package/frontend/dist/assets/redshift-D66HwlyV.js +1 -0
- package/frontend/dist/assets/requirementDiagram-Z7DCOOCP-EQHcxLB0.js +73 -0
- package/frontend/dist/assets/restructuredtext-DQT2NKJ2.js +1 -0
- package/frontend/dist/assets/rough.esm-DxAX5Vpo.js +1 -0
- package/frontend/dist/assets/ruby-iFXI8hwH.js +1 -0
- package/frontend/dist/assets/rust-CSKiei34.js +1 -0
- package/frontend/dist/assets/sankeyDiagram-WA2Y5GQK-RDx6Bd-B.js +10 -0
- package/frontend/dist/assets/sb-Bo3ttdP2.js +1 -0
- package/frontend/dist/assets/scala-BC1D-Nxp.js +1 -0
- package/frontend/dist/assets/scheme-Z4OAo4Lv.js +1 -0
- package/frontend/dist/assets/scss-BvrdPs6B.js +3 -0
- package/frontend/dist/assets/sequenceDiagram-2WXFIKYE-BuXA25IP.js +145 -0
- package/frontend/dist/assets/shell-Bh_aCyF-.js +1 -0
- package/frontend/dist/assets/solidity-CWHj6tSe.js +1 -0
- package/frontend/dist/assets/sophia-raoNtKtm.js +1 -0
- package/frontend/dist/assets/sparql-XzmoGnue.js +1 -0
- package/frontend/dist/assets/sql-BD0i9Gvg.js +1 -0
- package/frontend/dist/assets/src-Bn-kKzs7.js +1 -0
- package/frontend/dist/assets/st-DtVKyms6.js +1 -0
- package/frontend/dist/assets/stateDiagram-RAJIS63D-ddkAWKhI.js +1 -0
- package/frontend/dist/assets/stateDiagram-v2-FVOUBMTO-BLVAwlfX.js +1 -0
- package/frontend/dist/assets/swift--UZs77wT.js +1 -0
- package/frontend/dist/assets/systemverilog-CDnBSWUd.js +1 -0
- package/frontend/dist/assets/tcl-DdCEuTHZ.js +1 -0
- package/frontend/dist/assets/timeline-definition-YZTLITO2-BnatPBR5.js +61 -0
- package/frontend/dist/assets/treemap-KZPCXAKY-FonqU4zC.js +1 -0
- package/frontend/dist/assets/ts.worker-DyPAEIuH.js +67719 -0
- package/frontend/dist/assets/tsMode-iuvyEpyO.js +11 -0
- package/frontend/dist/assets/twig-SSL-Altf.js +1 -0
- package/frontend/dist/assets/typescript-17918Hud.js +1 -0
- package/frontend/dist/assets/typespec-BT7S0ETg.js +1 -0
- package/frontend/dist/assets/vb-CrIgucua.js +1 -0
- package/frontend/dist/assets/vennDiagram-LZ73GAT5-C6g8XU-E.js +34 -0
- package/frontend/dist/assets/wgsl-BeKc3oEp.js +298 -0
- package/frontend/dist/assets/workers-DTfwKVoM.js +1 -0
- package/frontend/dist/assets/xml-CBMr_Wbw.js +1 -0
- package/frontend/dist/assets/xterm-BrP-ENHg.css +1 -0
- package/frontend/dist/assets/xterm-CBX2m0YM.js +36 -0
- package/frontend/dist/assets/xychartDiagram-JWTSCODW-BEz425ew.js +7 -0
- package/frontend/dist/assets/yaml-CTjCH7Bv.js +1 -0
- package/frontend/dist/fonts/inter-300.ttf +0 -0
- package/frontend/dist/fonts/inter-400.ttf +0 -0
- package/frontend/dist/fonts/inter-500.ttf +0 -0
- package/frontend/dist/fonts/inter-600.ttf +0 -0
- package/frontend/dist/fonts/inter-700.ttf +0 -0
- package/frontend/dist/index.html +49 -0
- package/frontend/dist/logo_192x192.png +0 -0
- package/frontend/dist/logo_32x32.png +0 -0
- package/frontend/dist/logo_512x512.png +0 -0
- package/frontend/dist/logo_64x64.png +0 -0
- package/frontend/dist/logobg_192x192.png +0 -0
- package/frontend/dist/logobg_512x512.png +0 -0
- package/frontend/dist/logobg_64x64.png +0 -0
- package/frontend/dist/manifest.json +25 -0
- package/frontend/dist/sw.js +22 -0
- package/package.json +74 -7
- package/preload/Makefile +12 -0
- package/preload/atoo-studio-preload.c +647 -0
- package/preload/atoo-studio-preload.so +0 -0
- package/setup-cuse.sh +260 -0
- package/setup.sh +81 -0
- package/src/serial/native/binding.gyp +10 -0
- package/src/serial/native/pty_pair.c +222 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Markus Furtlehner
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.github.md
ADDED
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="https://atoo.ai/img/logo_64x64.png" alt="Atoo Studio" width="64" height="64">
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<h1 align="center">Atoo Studio</h1>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<strong>Local-first workspace for Claude Code, Codex CLI, and other coding agents.</strong><br>
|
|
9
|
+
Run multiple agents across projects and worktrees, fork and chain sessions, preview apps with real Chrome + DevTools, and manage Git, GitHub, databases, containers, and hardware from one browser UI.
|
|
10
|
+
</p>
|
|
11
|
+
|
|
12
|
+
<p align="center">
|
|
13
|
+
<img src="https://img.shields.io/badge/status-early%20alpha-orange" alt="Early Alpha">
|
|
14
|
+
</p>
|
|
15
|
+
|
|
16
|
+
<p align="center">
|
|
17
|
+
<a href="https://atoo.ai">Website</a> ·
|
|
18
|
+
<a href="#demo">Demo</a> ·
|
|
19
|
+
<a href="#getting-started">Getting Started</a> ·
|
|
20
|
+
<a href="#core-capabilities">Core Capabilities</a> ·
|
|
21
|
+
<a href="#platform-support">Platform Support</a>
|
|
22
|
+
</p>
|
|
23
|
+
|
|
24
|
+
<p align="center">
|
|
25
|
+
Built by <a href="https://github.com/markusfurtlehner">Markus Furtlehner</a> ·
|
|
26
|
+
<a href="https://www.ittrail.at">IT Trail GmbH</a>
|
|
27
|
+
</p>
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Demo
|
|
32
|
+
|
|
33
|
+
<table align="center">
|
|
34
|
+
<tr>
|
|
35
|
+
<td align="center"><img src="demoassets/layout-21-9.png" alt="Atoo Studio on an ultrawide display" width="820"></td>
|
|
36
|
+
</tr>
|
|
37
|
+
<tr>
|
|
38
|
+
<td align="center"><sub>Ultrawide (21:9) — the full workspace with agent sessions, file tree, editor, and live app preview side by side.</sub></td>
|
|
39
|
+
</tr>
|
|
40
|
+
</table>
|
|
41
|
+
|
|
42
|
+
<table align="center">
|
|
43
|
+
<tr>
|
|
44
|
+
<td align="center"><img src="demoassets/layout-16-9.png" alt="Atoo Studio on a standard display" width="560"></td>
|
|
45
|
+
<td align="center"><img src="demoassets/mobile-mockup-portrait.jpg" alt="Atoo Studio on mobile" width="225"></td>
|
|
46
|
+
</tr>
|
|
47
|
+
<tr>
|
|
48
|
+
<td align="center"><sub>Standard (16:9) — collapsible sidebars keep the full workspace usable, including the live app preview.</sub></td>
|
|
49
|
+
<td align="center"><sub>Mobile — a dedicated layout with all features accessible on any phone or tablet.</sub></td>
|
|
50
|
+
</tr>
|
|
51
|
+
</table>
|
|
52
|
+
|
|
53
|
+
<table align="center">
|
|
54
|
+
<tr>
|
|
55
|
+
<td align="center"><img src="demoassets/atoo-studio-carousel-mode.gif" alt="Atoo Studio carousel mode" width="420"></td>
|
|
56
|
+
</tr>
|
|
57
|
+
<tr>
|
|
58
|
+
<td align="center"><sub>Experimental carousel view — a 2D panel layout where the active view follows mouse movement automatically.</sub></td>
|
|
59
|
+
</tr>
|
|
60
|
+
</table>
|
|
61
|
+
|
|
62
|
+
## What is Atoo Studio?
|
|
63
|
+
|
|
64
|
+
Atoo Studio is a browser-based control room for working with coding agents like **Claude Code** and **Codex CLI**.
|
|
65
|
+
|
|
66
|
+
It does not replace your editor or your agent. It gives them a shared environment: agent sessions, code, live preview, DevTools, Git, GitHub, databases, containers, and even hardware access in one place.
|
|
67
|
+
|
|
68
|
+
Run it locally on Linux, macOS, or WSL as a local web server. No cloud dependency. No vendor lock-in.
|
|
69
|
+
|
|
70
|
+
## Why it exists
|
|
71
|
+
|
|
72
|
+
Coding agents are great at focused tasks. The chaos starts around them.
|
|
73
|
+
|
|
74
|
+
Once you work across multiple projects, worktrees, terminals, dev servers, browser tabs, and agent sessions, the workflow breaks down fast. You lose context, you lose overview, and you spend too much time managing the environment instead of shipping.
|
|
75
|
+
|
|
76
|
+
Atoo Studio was built from that exact pain: creating a workspace that actually matches how agent-driven development works in practice.
|
|
77
|
+
|
|
78
|
+
## Core capabilities
|
|
79
|
+
|
|
80
|
+
### Agent workflows
|
|
81
|
+
|
|
82
|
+
- Run multiple coding agents in parallel across isolated projects and worktrees.
|
|
83
|
+
- Each agent runs in a real PTY session with full terminal capabilities.
|
|
84
|
+
- Fork sessions to explore alternative approaches without losing the original context.
|
|
85
|
+
- Chain sessions across agents, so you can start with Claude Code and continue with Codex using the same conversation history.
|
|
86
|
+
- Search session history via MCP so agents can reuse past decisions, failed attempts, and implementation context.
|
|
87
|
+
- Set session names, descriptions, and tags for better navigation and recall.
|
|
88
|
+
- Track project-level changes so you always know what has been done, by which session, and when.
|
|
89
|
+
|
|
90
|
+
### Preview and debugging
|
|
91
|
+
|
|
92
|
+
- Built-in app preview powered by headless Chrome and the Chrome DevTools Protocol.
|
|
93
|
+
- Pixel-streamed preview, not iframes, so there are no cross-origin limitations.
|
|
94
|
+
- Open Chrome DevTools directly inside the workspace.
|
|
95
|
+
- Request trusted HTTPS certificates from the built-in CA for local testing.
|
|
96
|
+
- Test responsive layouts with device presets, custom viewports, zoom, rotation, and touch emulation.
|
|
97
|
+
|
|
98
|
+
### Git and GitHub workflow
|
|
99
|
+
|
|
100
|
+
- Browse issues and pull requests, view comments, and open or update PRs from the GitHub panel.
|
|
101
|
+
- Link sessions to issues or pull requests for better task context.
|
|
102
|
+
- Inspect branches, commit history, stashes, and diffs from the Git panel.
|
|
103
|
+
- Work with multiple Git worktrees side by side as separate projects.
|
|
104
|
+
- Use the one-click **Publish** flow to commit, push, and open a PR.
|
|
105
|
+
|
|
106
|
+
### Data, infrastructure, and devices
|
|
107
|
+
|
|
108
|
+
- Explore 15 database types including PostgreSQL, MySQL, SQLite, Redis, MongoDB, Elasticsearch, ClickHouse, CockroachDB, Cassandra, Neo4j, and InfluxDB.
|
|
109
|
+
- Auto-discover database connections from `docker-compose` files, environment variables, and port scanning.
|
|
110
|
+
- Manage Docker, Podman, and LXC containers from the workspace.
|
|
111
|
+
- Browse container images, networks, volumes, compose projects, logs, and stats.
|
|
112
|
+
- Connect real hardware like ESP32 boards through Web Serial, bridged to a virtual PTY so agents can flash firmware and monitor output.
|
|
113
|
+
|
|
114
|
+
### Workspace experience
|
|
115
|
+
|
|
116
|
+
- File explorer and editor with source, diff, rendered, and hex views.
|
|
117
|
+
- Integrated terminal tabs running directly on the server.
|
|
118
|
+
- Built-in reverse proxy with subdomain and path-based routing.
|
|
119
|
+
- Optional authentication with password, TOTP, and WebAuthn/passkeys.
|
|
120
|
+
- Real-time shared workspace views across multiple browsers.
|
|
121
|
+
- Responsive mobile layout for monitoring and control on the go.
|
|
122
|
+
- Installable as a desktop app via PWA.
|
|
123
|
+
|
|
124
|
+
## Platform support
|
|
125
|
+
|
|
126
|
+
| Capability | Linux | macOS | Native Windows |
|
|
127
|
+
|------------|-------|-------|----------------|
|
|
128
|
+
| Core workspace (agents, terminal, git, files) | Yes | Yes | No |
|
|
129
|
+
| Browser preview (CDP streaming) | Yes | Yes | - |
|
|
130
|
+
| Serial devices (PTY bridge) | Yes | Yes | - |
|
|
131
|
+
| Serial control signals (DTR/RTS via CUSE) | Yes | No | - |
|
|
132
|
+
|
|
133
|
+
**Native Windows is not supported. Use WSL instead.**
|
|
134
|
+
|
|
135
|
+
**macOS support is completely untested at this time.** It should work in principle, but expect rough edges.
|
|
136
|
+
|
|
137
|
+
## Getting started
|
|
138
|
+
|
|
139
|
+
### Requirements
|
|
140
|
+
|
|
141
|
+
**Required**
|
|
142
|
+
- Node.js 18+
|
|
143
|
+
- Git
|
|
144
|
+
- Linux, macOS, or WSL
|
|
145
|
+
|
|
146
|
+
**Optional dependencies**
|
|
147
|
+
|
|
148
|
+
| Dependency | Enables |
|
|
149
|
+
|------------|---------|
|
|
150
|
+
| [Claude Code](https://docs.anthropic.com/en/docs/claude-code) (`claude`) | Claude Code agent support |
|
|
151
|
+
| [Codex CLI](https://github.com/openai/codex) (`codex`) | Codex agent support |
|
|
152
|
+
| [GitHub CLI](https://cli.github.com/) (`gh`) | GitHub issues and PR integration |
|
|
153
|
+
| `docker`, `podman`, or `lxc` | Container management |
|
|
154
|
+
| `ffmpeg` | Screen recording |
|
|
155
|
+
| Chrome libraries on Linux | Browser preview |
|
|
156
|
+
| CUSE on Linux | Serial control signals (DTR/RTS) |
|
|
157
|
+
|
|
158
|
+
Missing optional dependencies are reported as warnings on startup.
|
|
159
|
+
|
|
160
|
+
### Quick start
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
npx atoo-studio
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Then open `https://localhost:3010` in your browser.
|
|
167
|
+
|
|
168
|
+
To use a different port, set the `ATOO_PORT` environment variable:
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
ATOO_PORT=4000 npx atoo-studio
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### Docker
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
docker run -p 3010:3010 ghcr.io/atooai/atoo-studio
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
To persist data across container restarts:
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
docker run -p 3010:3010 -v atoo-data:/home/atoo/.atoo-studio ghcr.io/atooai/atoo-studio
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### LXC / LXD
|
|
187
|
+
|
|
188
|
+
Download the LXC image from the [latest release](https://github.com/atooai/atoo-studio/releases) and import it:
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
lxc image import atoo-studio-lxc-amd64.tar.gz --alias atoo-studio
|
|
192
|
+
lxc launch atoo-studio my-atoo-studio
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### Proxmox (experimental)
|
|
196
|
+
|
|
197
|
+
Run one of the setup scripts on your Proxmox host:
|
|
198
|
+
|
|
199
|
+
**LXC container** — lightweight, 2 CPU / 2 GB RAM / 20 GB disk
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
bash -c "$(curl -fsSL https://raw.githubusercontent.com/atooai/atoo-studio/main/proxmox/lxc.sh)"
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
**VM** — stronger isolation, CUSE/serial support, 4 CPU / 4 GB RAM / 50 GB disk
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
bash -c "$(curl -fsSL https://raw.githubusercontent.com/atooai/atoo-studio/main/proxmox/vm.sh)"
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
Both scripts prompt for container or VM ID, hostname, storage, and resources with sensible defaults.
|
|
212
|
+
|
|
213
|
+
### Linux setup
|
|
214
|
+
|
|
215
|
+
To enable browser preview and screen recording support:
|
|
216
|
+
|
|
217
|
+
```bash
|
|
218
|
+
sudo ./setup.sh
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
To enable CUSE for serial control signals like DTR/RTS:
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
sudo ./setup-cuse.sh
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
`setup.sh` supports `apt-get` (Debian/Ubuntu), `dnf` (Fedora/RHEL), and `pacman` (Arch).
|
|
228
|
+
|
|
229
|
+
`setup-cuse.sh` builds the native CUSE helper, loads the kernel module, and configures permissions. Check the script header for container-specific notes for Docker or LXC.
|
|
230
|
+
|
|
231
|
+
### macOS setup
|
|
232
|
+
|
|
233
|
+
No additional setup is required for core functionality.
|
|
234
|
+
|
|
235
|
+
For screen recording support, install `ffmpeg` via the setup script:
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
./setup.sh
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
CUSE is not available on macOS, so serial control signals like DTR/RTS are not supported. When flashing boards such as ESP32, use the **BOOT** button manually.
|
|
242
|
+
|
|
243
|
+
## Architecture
|
|
244
|
+
|
|
245
|
+
Atoo Studio runs as a single local backend process on the same machine or server as your coding agents.
|
|
246
|
+
|
|
247
|
+
```text
|
|
248
|
+
Browser (any device)
|
|
249
|
+
│
|
|
250
|
+
│ WebSocket + HTTP
|
|
251
|
+
▼
|
|
252
|
+
Atoo Studio Backend
|
|
253
|
+
│
|
|
254
|
+
├── Agent adapters (Claude Code, Codex)
|
|
255
|
+
├── PTY session manager
|
|
256
|
+
├── Session chain & fork system
|
|
257
|
+
├── Project & worktree manager
|
|
258
|
+
├── Git & GitHub integration
|
|
259
|
+
├── Database explorer
|
|
260
|
+
├── Container manager (Docker, Podman, LXC)
|
|
261
|
+
├── Reverse proxy with service registry
|
|
262
|
+
├── CDP preview (headless Chrome)
|
|
263
|
+
├── Certificate authority
|
|
264
|
+
├── Serial device bridge
|
|
265
|
+
├── Authentication system
|
|
266
|
+
└── MCP server
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
Agents run inside real terminal sessions. Atoo Studio does not replace the agent — it provides the environment where agents operate.
|
|
270
|
+
|
|
271
|
+
## MCP integration
|
|
272
|
+
|
|
273
|
+
Atoo Studio exposes MCP tools that let agents talk back to the workspace UI.
|
|
274
|
+
|
|
275
|
+
| Tool | Description |
|
|
276
|
+
|------|-------------|
|
|
277
|
+
| `generate_certificate` | Request a trusted HTTPS certificate for any hostname |
|
|
278
|
+
| `report_tcp_services` | Report started services so they appear in the preview panel |
|
|
279
|
+
| `request_serial_device` | Request USB serial device access via the Web Serial bridge |
|
|
280
|
+
| `search_session_history` | Search across all session history or within the current session chain |
|
|
281
|
+
| `suggest_continue_in_other_session` | Suggest switching to an existing session with relevant context |
|
|
282
|
+
| `open_file` | Open a file in the browser editor with user approval |
|
|
283
|
+
| `get_session_metadata` | Read session name, description, and tags |
|
|
284
|
+
| `set_session_metadata` | Set session name, description, and tags |
|
|
285
|
+
| `github_issue_pr_changed` | Notify the UI when a GitHub issue or PR changes |
|
|
286
|
+
| `connect_database` | Open the database explorer with a specific connection |
|
|
287
|
+
| `track_project_changes` | Track what has been done in a project (get/set/delete) |
|
|
288
|
+
|
|
289
|
+
## Commercial support
|
|
290
|
+
|
|
291
|
+
Need help building agent tooling, multi-agent workflows, local-first developer environments, or custom integrations around Claude Code and Codex?
|
|
292
|
+
|
|
293
|
+
Commercial support and consulting are available via [IT Trail GmbH](https://www.ittrail.at).
|
|
294
|
+
|
|
295
|
+
## Status
|
|
296
|
+
|
|
297
|
+
Atoo Studio is in **early alpha**. It is used for real day-to-day development across multiple projects and worktrees, but APIs, configuration, and UI may change without notice.
|
|
298
|
+
|
|
299
|
+
Bug reports and feedback are welcome.
|
|
300
|
+
|
|
301
|
+
## Roadmap
|
|
302
|
+
|
|
303
|
+
- [ ] Add Gemini CLI as a third supported agent
|
|
304
|
+
- [ ] Standalone Electron app with real browser sessions for preview (in addition to headless CDP streaming)
|
|
305
|
+
- [ ] Refine mobile layout and bring all recently added features to the mobile view
|
|
306
|
+
- [ ] Self-hosted Git platform support: Gitea, GitLab, and Azure DevOps Server
|
|
307
|
+
- [ ] Evaluate cloud platforms for native management (containers, databases, infrastructure)
|
|
308
|
+
- [ ] Experiment with alternative workspace layouts
|
|
309
|
+
- [ ] Optional per-project development containers
|
|
310
|
+
- [ ] Replace xterm.js with atoo-term (currently in development)
|
|
311
|
+
|
|
312
|
+
## Feedback
|
|
313
|
+
|
|
314
|
+
Atoo Studio is not accepting code contributions at this stage. The architecture is evolving quickly and external PRs would likely conflict with ongoing changes.
|
|
315
|
+
|
|
316
|
+
Bug reports, feature ideas, and workflow pain points are very welcome — please open an issue.
|
|
317
|
+
|
|
318
|
+
## License
|
|
319
|
+
|
|
320
|
+
[MIT](LICENSE)
|
|
321
|
+
|
|
322
|
+
## Author
|
|
323
|
+
|
|
324
|
+
Built by [Markus Furtlehner](https://github.com/markusfurtlehner) — founder of [IT Trail GmbH](https://www.ittrail.at).
|
|
325
|
+
|
|
326
|
+
Built from real pain, not a pitch deck.
|
|
327
|
+
|
|
328
|
+
> [atoo.ai](https://atoo.ai)
|
package/README.md
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# Atoo Studio
|
|
2
|
+
|
|
3
|
+
**Agentic Development Environment** — A workspace where coding agents build, run and debug real systems.
|
|
4
|
+
|
|
5
|
+
Atoo Studio is a browser-based development environment for working with coding agents like Claude Code and Codex CLI. It brings agents, code, preview, DevTools, Git, GitHub, databases and hardware devices into one workspace.
|
|
6
|
+
|
|
7
|
+
Runs on Linux, macOS or WSL as a local web server. No cloud dependency, no vendor lock-in.
|
|
8
|
+
|
|
9
|
+
## Quick Start
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npx atoo-studio
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Then open `https://localhost:3010` in your browser.
|
|
16
|
+
|
|
17
|
+
To use a different port:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
ATOO_PORT=4000 npx atoo-studio
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Install Globally
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npm install -g atoo-studio
|
|
27
|
+
atoo-studio
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Docker
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
docker run -p 3010:3010 ghcr.io/atooai/atoo-studio
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Features
|
|
37
|
+
|
|
38
|
+
- **Multi-agent workflows** — Run Claude Code, Codex CLI and more in parallel across projects and worktrees
|
|
39
|
+
- **Session forking & chaining** — Chain sessions across agents, search history via MCP
|
|
40
|
+
- **Project changes tracking** — Know what was done, by which session, and when
|
|
41
|
+
- **App preview** — Live preview via headless Chrome (CDP pixel streaming), with DevTools and responsive testing
|
|
42
|
+
- **GitHub integration** — Issues, PRs, comments, labels — all from the workspace
|
|
43
|
+
- **Git integration** — Branches, commits, worktrees, stash, diff views, one-click publish
|
|
44
|
+
- **Database explorer** — 15+ database types with specialized views (PostgreSQL, MySQL, SQLite, Redis, MongoDB, Neo4j, InfluxDB, and more)
|
|
45
|
+
- **Container management** — Docker, Podman, and LXC containers
|
|
46
|
+
- **File editor** — Source, diff, rendered, and hex views with drag-and-drop
|
|
47
|
+
- **Serial devices** — Flash ESP32 and Arduino boards through the browser via Web Serial
|
|
48
|
+
- **Terminal** — Multiple PTY sessions with full terminal capabilities
|
|
49
|
+
- **Reverse proxy** — Subdomain and path-based routing with automatic service detection
|
|
50
|
+
- **Authentication** — Password, TOTP, and WebAuthn/passkey support
|
|
51
|
+
- **HTTPS** — Built-in certificate authority trusted by the preview browser
|
|
52
|
+
- **Mobile layout** — Responsive UI with swipe gestures
|
|
53
|
+
- **PWA** — Installable as a desktop app
|
|
54
|
+
|
|
55
|
+
## Requirements
|
|
56
|
+
|
|
57
|
+
- Node.js 18+
|
|
58
|
+
- Linux, macOS or WSL
|
|
59
|
+
- git
|
|
60
|
+
|
|
61
|
+
### Optional dependencies
|
|
62
|
+
|
|
63
|
+
| Dependency | Feature |
|
|
64
|
+
|------------|---------|
|
|
65
|
+
| `claude` (Claude Code) | Claude Code agent |
|
|
66
|
+
| `codex` (Codex CLI) | Codex agent |
|
|
67
|
+
| `gh` (GitHub CLI) | GitHub integration |
|
|
68
|
+
| docker / podman / lxc | Container management |
|
|
69
|
+
| ffmpeg | Screen recording |
|
|
70
|
+
|
|
71
|
+
Missing dependencies are reported as warnings on startup.
|
|
72
|
+
|
|
73
|
+
### Linux setup
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
# Install Chrome/Puppeteer dependencies and ffmpeg
|
|
77
|
+
sudo ./setup.sh
|
|
78
|
+
|
|
79
|
+
# Optional: Serial control signals (DTR/RTS) for device flashing
|
|
80
|
+
sudo ./setup-cuse.sh
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### macOS setup
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
# Install ffmpeg for screen recording (optional)
|
|
87
|
+
./setup.sh
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Platform Support
|
|
91
|
+
|
|
92
|
+
| Feature | Linux | macOS | Windows |
|
|
93
|
+
|---------|-------|-------|---------|
|
|
94
|
+
| Core (agents, terminal, git, files) | Yes | Yes | No (use WSL) |
|
|
95
|
+
| Browser preview | Yes | Yes | — |
|
|
96
|
+
| Serial devices (CUSE) | Yes | No | — |
|
|
97
|
+
| Serial devices (PTY fallback) | Yes | Yes | — |
|
|
98
|
+
|
|
99
|
+
## MCP Tools
|
|
100
|
+
|
|
101
|
+
Atoo Studio exposes MCP tools for agent integration:
|
|
102
|
+
|
|
103
|
+
`generate_certificate` · `report_tcp_services` · `request_serial_device` · `search_session_history` · `suggest_continue_in_other_session` · `open_file` · `get_session_metadata` · `set_session_metadata` · `github_issue_pr_changed` · `connect_database` · `track_project_changes`
|
|
104
|
+
|
|
105
|
+
## Other Installation Methods
|
|
106
|
+
|
|
107
|
+
- **Docker**: `ghcr.io/atooai/atoo-studio`
|
|
108
|
+
- **LXC/LXD**: Download from [GitHub Releases](https://github.com/atooai/atoo-studio/releases)
|
|
109
|
+
- **Proxmox**: One-command [LXC](https://github.com/atooai/atoo-studio/tree/main/proxmox) and [VM](https://github.com/atooai/atoo-studio/tree/main/proxmox) scripts
|
|
110
|
+
|
|
111
|
+
## Links
|
|
112
|
+
|
|
113
|
+
- [GitHub](https://github.com/atooai/atoo-studio)
|
|
114
|
+
- [Website](https://atoo.ai)
|
|
115
|
+
|
|
116
|
+
## License
|
|
117
|
+
|
|
118
|
+
MIT — Built by [Markus Furtlehner](https://github.com/markusfurtlehner)
|
package/README.npm.md
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# Atoo Studio
|
|
2
|
+
|
|
3
|
+
**Agentic Development Environment** — A workspace where coding agents build, run and debug real systems.
|
|
4
|
+
|
|
5
|
+
Atoo Studio is a browser-based development environment for working with coding agents like Claude Code and Codex CLI. It brings agents, code, preview, DevTools, Git, GitHub, databases and hardware devices into one workspace.
|
|
6
|
+
|
|
7
|
+
Runs on Linux, macOS or WSL as a local web server. No cloud dependency, no vendor lock-in.
|
|
8
|
+
|
|
9
|
+
## Quick Start
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npx atoo-studio
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Then open `https://localhost:3010` in your browser.
|
|
16
|
+
|
|
17
|
+
To use a different port:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
ATOO_PORT=4000 npx atoo-studio
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Install Globally
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npm install -g atoo-studio
|
|
27
|
+
atoo-studio
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Docker
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
docker run -p 3010:3010 ghcr.io/atooai/atoo-studio
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Features
|
|
37
|
+
|
|
38
|
+
- **Multi-agent workflows** — Run Claude Code, Codex CLI and more in parallel across projects and worktrees
|
|
39
|
+
- **Session forking & chaining** — Chain sessions across agents, search history via MCP
|
|
40
|
+
- **Project changes tracking** — Know what was done, by which session, and when
|
|
41
|
+
- **App preview** — Live preview via headless Chrome (CDP pixel streaming), with DevTools and responsive testing
|
|
42
|
+
- **GitHub integration** — Issues, PRs, comments, labels — all from the workspace
|
|
43
|
+
- **Git integration** — Branches, commits, worktrees, stash, diff views, one-click publish
|
|
44
|
+
- **Database explorer** — 15+ database types with specialized views (PostgreSQL, MySQL, SQLite, Redis, MongoDB, Neo4j, InfluxDB, and more)
|
|
45
|
+
- **Container management** — Docker, Podman, and LXC containers
|
|
46
|
+
- **File editor** — Source, diff, rendered, and hex views with drag-and-drop
|
|
47
|
+
- **Serial devices** — Flash ESP32 and Arduino boards through the browser via Web Serial
|
|
48
|
+
- **Terminal** — Multiple PTY sessions with full terminal capabilities
|
|
49
|
+
- **Reverse proxy** — Subdomain and path-based routing with automatic service detection
|
|
50
|
+
- **Authentication** — Password, TOTP, and WebAuthn/passkey support
|
|
51
|
+
- **HTTPS** — Built-in certificate authority trusted by the preview browser
|
|
52
|
+
- **Mobile layout** — Responsive UI with swipe gestures
|
|
53
|
+
- **PWA** — Installable as a desktop app
|
|
54
|
+
|
|
55
|
+
## Requirements
|
|
56
|
+
|
|
57
|
+
- Node.js 18+
|
|
58
|
+
- Linux, macOS or WSL
|
|
59
|
+
- git
|
|
60
|
+
|
|
61
|
+
### Optional dependencies
|
|
62
|
+
|
|
63
|
+
| Dependency | Feature |
|
|
64
|
+
|------------|---------|
|
|
65
|
+
| `claude` (Claude Code) | Claude Code agent |
|
|
66
|
+
| `codex` (Codex CLI) | Codex agent |
|
|
67
|
+
| `gh` (GitHub CLI) | GitHub integration |
|
|
68
|
+
| docker / podman / lxc | Container management |
|
|
69
|
+
| ffmpeg | Screen recording |
|
|
70
|
+
|
|
71
|
+
Missing dependencies are reported as warnings on startup.
|
|
72
|
+
|
|
73
|
+
### Linux setup
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
# Install Chrome/Puppeteer dependencies and ffmpeg
|
|
77
|
+
sudo ./setup.sh
|
|
78
|
+
|
|
79
|
+
# Optional: Serial control signals (DTR/RTS) for device flashing
|
|
80
|
+
sudo ./setup-cuse.sh
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### macOS setup
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
# Install ffmpeg for screen recording (optional)
|
|
87
|
+
./setup.sh
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Platform Support
|
|
91
|
+
|
|
92
|
+
| Feature | Linux | macOS | Windows |
|
|
93
|
+
|---------|-------|-------|---------|
|
|
94
|
+
| Core (agents, terminal, git, files) | Yes | Yes | No (use WSL) |
|
|
95
|
+
| Browser preview | Yes | Yes | — |
|
|
96
|
+
| Serial devices (CUSE) | Yes | No | — |
|
|
97
|
+
| Serial devices (PTY fallback) | Yes | Yes | — |
|
|
98
|
+
|
|
99
|
+
## MCP Tools
|
|
100
|
+
|
|
101
|
+
Atoo Studio exposes MCP tools for agent integration:
|
|
102
|
+
|
|
103
|
+
`generate_certificate` · `report_tcp_services` · `request_serial_device` · `search_session_history` · `suggest_continue_in_other_session` · `open_file` · `get_session_metadata` · `set_session_metadata` · `github_issue_pr_changed` · `connect_database` · `track_project_changes`
|
|
104
|
+
|
|
105
|
+
## Other Installation Methods
|
|
106
|
+
|
|
107
|
+
- **Docker**: `ghcr.io/atooai/atoo-studio`
|
|
108
|
+
- **LXC/LXD**: Download from [GitHub Releases](https://github.com/atooai/atoo-studio/releases)
|
|
109
|
+
- **Proxmox**: One-command [LXC](https://github.com/atooai/atoo-studio/tree/main/proxmox) and [VM](https://github.com/atooai/atoo-studio/tree/main/proxmox) scripts
|
|
110
|
+
|
|
111
|
+
## Links
|
|
112
|
+
|
|
113
|
+
- [GitHub](https://github.com/atooai/atoo-studio)
|
|
114
|
+
- [Website](https://atoo.ai)
|
|
115
|
+
|
|
116
|
+
## License
|
|
117
|
+
|
|
118
|
+
MIT — Built by [Markus Furtlehner](https://github.com/markusfurtlehner)
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import fs from 'fs';
|
|
5
|
+
import { execSync } from 'child_process';
|
|
6
|
+
import { fileURLToPath } from 'url';
|
|
7
|
+
|
|
8
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
9
|
+
const projectRoot = path.resolve(__dirname, '..');
|
|
10
|
+
|
|
11
|
+
/** Check if a command exists on PATH */
|
|
12
|
+
function hasCommand(cmd) {
|
|
13
|
+
try {
|
|
14
|
+
execSync(`which ${cmd}`, { stdio: 'ignore' });
|
|
15
|
+
return true;
|
|
16
|
+
} catch {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// --- Windows: not supported ---
|
|
22
|
+
if (process.platform === 'win32') {
|
|
23
|
+
console.error('[atoo-studio] Windows is not supported. Use WSL instead.');
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// --- Check dependencies ---
|
|
28
|
+
const warnings = [];
|
|
29
|
+
const setupHints = new Set();
|
|
30
|
+
|
|
31
|
+
// Required: git — core feature (version control, worktrees, file tracking)
|
|
32
|
+
if (!hasCommand('git')) {
|
|
33
|
+
warnings.push('git not found — version control, worktrees, and file tracking will not work.');
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Optional: gh — GitHub integration (issues, PRs, authentication)
|
|
37
|
+
if (!hasCommand('gh')) {
|
|
38
|
+
warnings.push('gh (GitHub CLI) not found — GitHub integration will not be available.');
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Optional: agent CLIs
|
|
42
|
+
if (!hasCommand('claude')) {
|
|
43
|
+
warnings.push('claude (Claude Code) not found — Claude Code agent will not be available.');
|
|
44
|
+
}
|
|
45
|
+
if (!hasCommand('codex')) {
|
|
46
|
+
warnings.push('codex (Codex CLI) not found — Codex agent will not be available.');
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Optional: container runtimes
|
|
50
|
+
if (!hasCommand('docker') && !hasCommand('podman') && !hasCommand('lxc')) {
|
|
51
|
+
warnings.push('No container runtime found (docker, podman, or lxc) — container management will not be available.');
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Optional: ffmpeg — screen recording
|
|
55
|
+
if (!hasCommand('ffmpeg')) {
|
|
56
|
+
warnings.push('ffmpeg not found — screen recording will not work.');
|
|
57
|
+
setupHints.add('setup.sh');
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// Platform-specific checks
|
|
61
|
+
if (process.platform === 'linux') {
|
|
62
|
+
// Chrome / Puppeteer libs (only needed on Linux — macOS ships its own)
|
|
63
|
+
try {
|
|
64
|
+
execSync('ldconfig -p | grep -q libatk-1.0', { stdio: 'ignore' });
|
|
65
|
+
} catch {
|
|
66
|
+
warnings.push('Missing Chrome dependencies — browser preview/streaming will not work.');
|
|
67
|
+
setupHints.add('setup.sh');
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// CUSE for serial control signals (DTR/RTS)
|
|
71
|
+
const cusebin = path.join(process.env.HOME || '', '.atoo-studio', 'bin', 'cuse_serial');
|
|
72
|
+
if (!fs.existsSync('/dev/cuse') || !fs.existsSync(cusebin)) {
|
|
73
|
+
warnings.push('CUSE not set up — serial control signals (DTR/RTS) will not work (e.g. auto-reset for ESP32).');
|
|
74
|
+
setupHints.add('setup-cuse.sh');
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// Print warnings
|
|
79
|
+
if (warnings.length > 0) {
|
|
80
|
+
for (const w of warnings) console.warn(`[atoo-studio] ${w}`);
|
|
81
|
+
if (setupHints.size > 0) {
|
|
82
|
+
const prefix = process.platform === 'linux' ? 'sudo ' : '';
|
|
83
|
+
const scripts = [...setupHints].map(s => `${prefix}./${s}`).join(' and ');
|
|
84
|
+
console.warn(`[atoo-studio] Run: ${scripts}`);
|
|
85
|
+
}
|
|
86
|
+
console.warn('');
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// Start the server
|
|
90
|
+
await import('../dist/src/index.js');
|