AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
Snug은 휴대용 에이전트 기반 개인 소프트웨어용 오픈 프로토콜로, 앱과 상태를 유지하고, 프라이버시가 필요할 때 로컬에서 실행합니다
Snug is an open protocol for portable, agent-backed personal software. Keep the app and its state, choose the intelligence, and run locally when privacy matters.
개발 도구TypeScript · JavaScriptGitHub @snugprotocol온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Portable, user-owned AI apps — one file, persistent state, your choice of host and intelligence.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
An open protocol for portable, agent-backed personal software.
Describe a small app in chat and the agent writes it. It runs in a hard sandbox and
thinks through the host's agent at runtime ,
while the app and its accumulated state — code, data, versions, chats — live in
one portable .snug file the user keeps .
A Snug app is not what a code generator produces. Three things set it apart:README 전문 보기 ↗A Snug app is not what a code generator produces. Three things set it apart:
The app's brain is the host agent. A Snug chess game doesn't embed a chess engine — it sends the board to the host LLM through a standard postMessage envelope and animates the reply. The app is a body; the agent is the mind. Each app carries a compact runtime contract authored at build time, so the same app runs well on any brain — including small local models.
You own your apps and your data. Everything — every app's code, ≥5 versions, its isolated database, your chats, your settings — lives in one portable .snug file (real SQLite, openable with ordinary tools, optionally passphrase-sealed). Download it, back it up, move it. Not vendor cloud rows: a file.
It's embeddable. Any product can drop in the runner + SDK and let their users build micro apps powered by their existing AI assistant. Snug is a protocol + reference implementation — the hosted Playground is the demo, not the product.
| Money that answers questions | A game the agent plays with you | Your services, connected safely |
|---|---|---|
| "what did I spend on dining out?" works even though the app never shipped that screen — the chat beside every app can query its data directly. | Built by describing it. The original flying-pig version was built by an 11-year-old talking to the AI. | Apps reach your services only through the host, inside a human-approved ceiling. Tokens never enter the iframe, never reach the LLM. |
git clone https://github.com/snugprotocol/snug.git && cd snug
pnpm install # ~2 min
pnpm dev # server (mock "demo brain" — no key) + Playground, one command
# open the printed URL → click a suggestion chip → build → run
Verify the whole stack if you like:
pnpm build && pnpm test # everything green (under 3 min)
pnpm smoke # headless happy path: build an app via the mock adapter
Bring your own key: open settings in the Playground, pick BYOK, paste an Anthropic or OpenAI key. It's stored in snug_secrets inside your own local user-DB file — stripped from hub sync and default exports, sent only to the provider. The starter apps run with zero setup.
Prefer an app? Download Snug for macOS — native fetch, loopback OAuth, and your file at ~/Snug/user.snug on disk.
Snug exists so any web app can offer this to its users: drop in @snugprotocol/runner + @snugprotocol/sdk, point them at your existing assistant through an adapter, and your users build micro apps that think through your agent — while their data stays in their file.
Start here: implementor's guide · embedding docs · the spec.
allow-scripts only) with no network of their own — connect-src blocked, fixed CDN allowlist.snug_secrets inside your own file — never in the iframe, never sent to the hub, never shown to the LLM. Connected apps reach your services only through the host executor, inside a frozen, human-approved host ceiling.Desktop is macOS-only through 1.0, for a security reason — on Windows, WebView2 injects the shell's IPC key into app iframes and no off-switch exists (threat model R-5). The browser Playground runs everywhere. Reporting: SECURITY.md.
This is the reference implementation monorepo. The protocol specification lives in snugprotocol/spec — Specification 1.0 is normative (one section, standing approvals, is explicitly provisional). Implementation packages remain pre-1.0 and may still move. Status: docs/next-steps.md.
| Path | What it is |
|---|---|
packages/protocol | @snugprotocol/protocol — typed envelope bindings; source of truth for spec schemas |
packages/runner | @snugprotocol/runner — sandboxed iframe runner + bridge host |
packages/sdk | @snugprotocol/sdk — in-app hooks: useSnugApp, usePersistedState, useAppDB (embedded + module forms) |
packages/db | @snugprotocol/db — sql.js + OPFS per-app isolated database, .snug export/import, optional passphrase encryption at rest |
packages/auth | @snugprotocol/auth — Dynamic Auth core + the connected-fetch executor: local-first credential handling, the frozen per-connection host ceiling, injection and response scrubbing |
packages/knowledge | @snugprotocol/knowledge — the LLM app-authoring knowledge base |
packages/adapters | @snugprotocol/adapters — anthropic, openai, mock |
apps/playground | Snug Playground — hosted demo (chat → build → run) |
apps/desktop | The macOS desktop shell (Tauri 2) — native fetch, loopback OAuth, ~/Snug/user.snug on disk |
apps/server | Minimal reference backend (/invoke + artifact store) — optional; the hub is static and needs no backend |
apps/whatsapp-sidecar | Local linked-device helper for the Telepath starter (desktop-only, LLM-free by construction) |
apps/website | snugprotocol.org — marketing, docs & spec hub, desktop download (static Astro + Starlight) |
examples/ | Curated starter apps — each doubles as docs example and test fixture |
This repo runs an agentic engineering process — start at docs/INDEX.md. No work outside a task file; every session closes with /close-session.
Contributions are welcome: CONTRIBUTING.md explains how outside PRs fit the process, and docs/good-first-issues.md lists curated entry points (mirrored on the good first issue label).
MIT · Security contact: [email protected] (SECURITY.md)