{"_id":"@andrew.ng/symbion","_rev":"2-6bd1c110858093ede9cdce658409c9a5","name":"@andrew.ng/symbion","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@andrew.ng/symbion","version":"0.1.0","license":"MIT","_id":"@andrew.ng/symbion@0.1.0","maintainers":[{"name":"andrew.ng","email":"quanghuyhihi128@gmail.com"}],"homepage":"https://github.com/Quanghuy128/Symbion","bugs":{"url":"https://github.com/Quanghuy128/Symbion/issues"},"bin":{"symbion":"bin/symbion.mjs"},"dist":{"shasum":"ba462f53fdf7b7afda3194842b79be7219ad7361","tarball":"https://registry.npmjs.org/@andrew.ng/symbion/-/symbion-0.1.0.tgz","fileCount":417,"integrity":"sha512-t9xxLQaKsAg/CDcUY5LUyHwzvwRQ0RlhAwO0+rYXKgrtUjVHgUHmep4+I1gl84Dbya8e2SoNBLbmZ1MVmTFpgQ==","signatures":[{"sig":"MEYCIQDst2VnpfbCgWFB467XrxsgZ0Ky3ol0bMPiNHsOkwz17QIhAOgmF0SiGDjXTKpINfrT7Fgolbi1A9ItBi1rwsP9ou1D","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2861915},"type":"module","engines":{"node":">=18"},"gitHead":"98da32f8806d2ab5f710c68f84ac15fd453ba8d8","private":false,"_npmUser":{"name":"andrew.ng","email":"quanghuyhihi128@gmail.com"},"repository":{"url":"git+https://github.com/Quanghuy128/Symbion.git","type":"git"},"_npmVersion":"11.11.1","description":"Local-daemon + web UI for authoring AI-coding autoworkflows.","directories":{},"_nodeVersion":"25.8.2","dependencies":{"yaml":"2.9.0","@symbion/core":"0.1.0","@symbion/rpc-types":"0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"bundleDependencies":["@symbion/core","@symbion/rpc-types","yaml"],"_npmOperationalInternal":{"tmp":"tmp/symbion_0.1.0_1783515525925_0.03935550557068401","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@andrew.ng/symbion","version":"0.1.1","description":"Local-daemon + web UI for authoring AI-coding autoworkflows.","private":false,"type":"module","bin":{"symbion":"bin/symbion.mjs"},"engines":{"node":">=18"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/Quanghuy128/Symbion.git"},"homepage":"https://github.com/Quanghuy128/Symbion","publishConfig":{"access":"public"},"dependencies":{"@symbion/core":"0.1.0","@symbion/rpc-types":"0.1.0","yaml":"2.9.0"},"gitHead":"d90f4ecd781373879ecbc3d275fa3c7b1594e5ca","_id":"@andrew.ng/symbion@0.1.1","bundleDependencies":["@symbion/core","@symbion/rpc-types","yaml"],"bugs":{"url":"https://github.com/Quanghuy128/Symbion/issues"},"_nodeVersion":"25.8.2","_npmVersion":"11.11.1","dist":{"integrity":"sha512-1R7XqL+MZ76QxJMx/Zj5+N0HiI2JirmbQA39SVDLtBjIQ6Qr0pFpEgQ7Kp/7htJYbZmOtRDoKxFEs18Ongtaeg==","shasum":"5ad2d1830023f862b2a4c3de41e101227fa58ecb","tarball":"https://registry.npmjs.org/@andrew.ng/symbion/-/symbion-0.1.1.tgz","fileCount":429,"unpackedSize":2924407,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIG0Igqsvf1HrC9aVuHtp4Bf/V6ddqi1BRpVVUfJJvv57AiBaInIHzsTma07vFpjiBIycxK1EIzmoT+FElkIIyzb60g=="}]},"_npmUser":{"name":"andrew.ng","email":"quanghuyhihi128@gmail.com"},"directories":{},"maintainers":[{"name":"andrew.ng","email":"quanghuyhihi128@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/symbion_0.1.1_1783655618322_0.20183434886401375"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-08T12:58:45.808Z","modified":"2026-07-10T03:53:38.652Z","0.1.0":"2026-07-08T12:58:46.108Z","0.1.1":"2026-07-10T03:53:38.553Z"},"bugs":{"url":"https://github.com/Quanghuy128/Symbion/issues"},"license":"MIT","homepage":"https://github.com/Quanghuy128/Symbion","repository":{"type":"git","url":"git+https://github.com/Quanghuy128/Symbion.git"},"description":"Local-daemon + web UI for authoring AI-coding autoworkflows.","maintainers":[{"name":"andrew.ng","email":"quanghuyhihi128@gmail.com"}],"readme":"# Symbion\n\n**Visual builder for AI-coding autoworkflows.** Define slash-commands and subagents once through a web UI, then export/sync them into any target repo's `.claude/` folder (and `AGENTS.md` for Codex) — instead of hand-writing `.md` pipeline files for every new project.\n\n## What problem this solves\n\nAI-coding pipelines (analyze → design → plan → build → review → ship) are usually authored as a pile of hand-written `.md` files (`.claude/agents/*.md`, `.claude/commands/*.md`, `settings.json`, hooks). Every new repo means copy-pasting and re-tweaking those files by hand, with easy-to-miss frontmatter mistakes.\n\nSymbion lets you define a workflow **once** as a canonical model (IR), then compiles it to whatever provider format you need and writes it safely into a target repo.\n\n## MVP scope (v1)\n\n- **Project management** — register a local repo path, manage multiple projects from a sidebar.\n- **Workflow / Agent builder** — form-based editor (with a raw Markdown tab) for slash-commands and subagents, matching real Claude Code frontmatter (`name`, `description`, `tools`, etc.) plus custom fields.\n- **Dependency graph** — read-only visualization of how commands/agents reference each other (not a drag-and-drop executor).\n- **Export / Upsert (\"Xuất bản\")** — render the canonical model into provider-specific files and safely write/update them in the target repo:\n  - **Claude Code**: `.claude/agents/*.md` + `.claude/commands/*.md`\n  - **Codex**: `AGENTS.md`\n- **Diff preview + conflict detection** — every publish renders → diffs against disk → asks for confirmation. Hand-edited \"managed\" files are detected via a marker/hash and never silently overwritten.\n- **Import** — parse an existing `.claude/` folder into the model, so you don't start from a blank canvas.\n- **Copy run command** — generates a structured prompt/CLI command to paste and run manually. Actual workflow *execution* is deferred to v2.\n\nOut of scope for v1: running workflows automatically, multi-project shared libraries, providers beyond Claude/Codex (Copilot/Gemini are planned as future adapters with no IR changes needed).\n\nSee [docs/loops/symbion-analyze.md](docs/loops/symbion-analyze.md), [symbion-design.md](docs/loops/symbion-design.md), and [symbion-STATE.md](docs/loops/symbion-STATE.md) for the full locked spec, design, and architecture.\n\n## Architecture\n\n```\napps/web      Next.js UI — project sidebar, builder forms, dependency graph, publish dialog\napps/daemon   Node process — the ONLY thing that touches disk/git. Exposes localhost RPC\npackages/core Pure TS — canonical IR, render/parse, diff, marker/hash, provider adapters\n```\n\n- `packages/core` has no filesystem/network imports — it's the compiler (IR ↔ Claude/Codex format).\n- `apps/daemon` binds to `127.0.0.1` only, owns all reads/writes/git access, and is the sole place where side effects happen.\n- `apps/web` is presentation only; every effect goes through a typed RPC call to the daemon.\n\n## Requirements\n\n- Node.js >= 18\n- npm\n\n## Installation\n\nInstall Symbion globally to use it as a CLI tool from any directory:\n\n```bash\nnpm install -g @andrew.ng/symbion\n```\n\nOr add it as a project dependency and run it via `npx`:\n\n```bash\nnpm install @andrew.ng/symbion\nnpx symbion\n```\n\n## Usage\n\nOnce installed, run:\n\n```bash\nsymbion\n```\n\nThis starts the local Symbion daemon and opens an interactive menu:\n\n```\n  1) Web UI   2) Hide to Tray   3) Exit\n```\n\n- **Web UI** opens the Symbion web app in your default browser, served\n  locally by the daemon (nothing is sent to any external server — Symbion\n  runs entirely on `127.0.0.1`).\n- **Hide to Tray** keeps the daemon running in the background so you can\n  keep using your terminal.\n- **Exit** shuts the daemon down.\n\nOther commands:\n\n```bash\nsymbion --version   # print the installed version\nsymbion --help      # show usage help\n```\n\n## Running from a clone (contributing / local development)\n\n```bash\nnpm install\nnpm start\n```\n\n`npm start` builds and boots the daemon, which prints a terminal menu:\n\n```\n========================================\n  Choose Interface (v0.1.0)\n  Server: http://localhost:<port>\n========================================\n  Web UI (Open in Browser)\n  Exit\n```\n\nPick **Web UI** to open the app in your browser at the printed `localhost` URL.\n\n### Development\n\n```bash\nnpm run dev:daemon   # daemon in watch mode\nnpm run dev:web      # Next.js dev server\n```\n\n### Tests\n\n```bash\nnpm test             # all unit tests (vitest)\nnpm run test:core    # packages/core only\nnpm run test:daemon  # apps/daemon only\nnpm run test:e2e     # build + Playwright end-to-end\n```\n\n## License\n\n[MIT](LICENSE)\n","readmeFilename":"README.md"}