@intent-systems/nexus 2026.1.5-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/CHANGELOG.md +222 -0
- package/LICENSE +21 -0
- package/README-header.png +0 -0
- package/README.md +462 -0
- package/dist/agents/agent-paths.js +16 -0
- package/dist/agents/agent-scope.js +44 -0
- package/dist/agents/auth-profiles.js +626 -0
- package/dist/agents/bash-process-registry.js +126 -0
- package/dist/agents/bash-tools.js +838 -0
- package/dist/agents/chutes-oauth.js +47 -0
- package/dist/agents/clawdbot-tools.js +62 -0
- package/dist/agents/context.js +34 -0
- package/dist/agents/defaults.js +6 -0
- package/dist/agents/memory-search.js +80 -0
- package/dist/agents/model-auth.js +115 -0
- package/dist/agents/model-catalog.js +55 -0
- package/dist/agents/model-fallback.js +210 -0
- package/dist/agents/model-scan.js +263 -0
- package/dist/agents/model-selection.js +152 -0
- package/dist/agents/models-config.js +171 -0
- package/dist/agents/nexus-tools.js +46 -0
- package/dist/agents/pi-embedded-block-chunker.js +188 -0
- package/dist/agents/pi-embedded-helpers.js +139 -0
- package/dist/agents/pi-embedded-runner.js +932 -0
- package/dist/agents/pi-embedded-subscribe.js +541 -0
- package/dist/agents/pi-embedded-utils.js +20 -0
- package/dist/agents/pi-embedded.js +1 -0
- package/dist/agents/pi-extensions/compaction-safeguard.js +140 -0
- package/dist/agents/pi-tool-definition-adapter.js +17 -0
- package/dist/agents/pi-tools.js +510 -0
- package/dist/agents/pi-tools.schema.js +358 -0
- package/dist/agents/sandbox-paths.js +68 -0
- package/dist/agents/sandbox.js +667 -0
- package/dist/agents/shell-utils.js +53 -0
- package/dist/agents/skill-runner.js +224 -0
- package/dist/agents/skill-state.js +164 -0
- package/dist/agents/skill-tools.js +191 -0
- package/dist/agents/skill-usage.js +43 -0
- package/dist/agents/skills-install.js +244 -0
- package/dist/agents/skills-status.js +157 -0
- package/dist/agents/skills.js +472 -0
- package/dist/agents/subagent-registry.js +321 -0
- package/dist/agents/subagent-registry.store.js +47 -0
- package/dist/agents/system-prompt.js +179 -0
- package/dist/agents/timeout.js +26 -0
- package/dist/agents/tool-display.js +155 -0
- package/dist/agents/tool-display.json +236 -0
- package/dist/agents/tool-images.js +138 -0
- package/dist/agents/tool-policy.js +87 -0
- package/dist/agents/tools/agent-step.js +41 -0
- package/dist/agents/tools/browser-tool.js +295 -0
- package/dist/agents/tools/canvas-tool.js +193 -0
- package/dist/agents/tools/common.js +88 -0
- package/dist/agents/tools/cron-tool.js +141 -0
- package/dist/agents/tools/discord-actions-guild.js +186 -0
- package/dist/agents/tools/discord-actions-messaging.js +313 -0
- package/dist/agents/tools/discord-actions-moderation.js +70 -0
- package/dist/agents/tools/discord-actions.js +56 -0
- package/dist/agents/tools/discord-schema.js +199 -0
- package/dist/agents/tools/discord-tool.js +16 -0
- package/dist/agents/tools/gateway-tool.js +46 -0
- package/dist/agents/tools/gateway.js +28 -0
- package/dist/agents/tools/image-tool.js +140 -0
- package/dist/agents/tools/memory-tool.js +92 -0
- package/dist/agents/tools/nodes-tool.js +413 -0
- package/dist/agents/tools/nodes-utils.js +92 -0
- package/dist/agents/tools/sessions-announce-target.js +35 -0
- package/dist/agents/tools/sessions-helpers.js +88 -0
- package/dist/agents/tools/sessions-history-tool.js +137 -0
- package/dist/agents/tools/sessions-list-tool.js +196 -0
- package/dist/agents/tools/sessions-send-helpers.js +103 -0
- package/dist/agents/tools/sessions-send-tool.js +371 -0
- package/dist/agents/tools/sessions-spawn-tool.js +319 -0
- package/dist/agents/tools/slack-actions.js +129 -0
- package/dist/agents/tools/slack-schema.js +59 -0
- package/dist/agents/tools/slack-tool.js +16 -0
- package/dist/agents/tools/telegram-actions.js +159 -0
- package/dist/agents/tools/telegram-schema.js +28 -0
- package/dist/agents/tools/telegram-tool.js +16 -0
- package/dist/agents/tools/whatsapp-login-tool.js +63 -0
- package/dist/agents/usage.js +58 -0
- package/dist/agents/workspace.js +264 -0
- package/dist/auto-reply/chunk.js +177 -0
- package/dist/auto-reply/command-auth.js +44 -0
- package/dist/auto-reply/command-detection.js +22 -0
- package/dist/auto-reply/envelope.js +30 -0
- package/dist/auto-reply/group-activation.js +20 -0
- package/dist/auto-reply/heartbeat.js +58 -0
- package/dist/auto-reply/model.js +22 -0
- package/dist/auto-reply/reply/abort.js +14 -0
- package/dist/auto-reply/reply/agent-runner.js +426 -0
- package/dist/auto-reply/reply/bash-command.js +314 -0
- package/dist/auto-reply/reply/block-streaming.js +34 -0
- package/dist/auto-reply/reply/body.js +29 -0
- package/dist/auto-reply/reply/commands.js +332 -0
- package/dist/auto-reply/reply/directive-handling.js +626 -0
- package/dist/auto-reply/reply/directives.js +59 -0
- package/dist/auto-reply/reply/dispatch-from-config.js +23 -0
- package/dist/auto-reply/reply/followup-runner.js +181 -0
- package/dist/auto-reply/reply/groups.js +152 -0
- package/dist/auto-reply/reply/mentions.js +64 -0
- package/dist/auto-reply/reply/model-selection.js +209 -0
- package/dist/auto-reply/reply/queue.js +399 -0
- package/dist/auto-reply/reply/reply-dispatcher.js +68 -0
- package/dist/auto-reply/reply/reply-tags.js +26 -0
- package/dist/auto-reply/reply/session-updates.js +103 -0
- package/dist/auto-reply/reply/session.js +169 -0
- package/dist/auto-reply/reply/typing.js +125 -0
- package/dist/auto-reply/reply.js +655 -0
- package/dist/auto-reply/send-policy.js +28 -0
- package/dist/auto-reply/status.js +197 -0
- package/dist/auto-reply/templating.js +9 -0
- package/dist/auto-reply/thinking.js +49 -0
- package/dist/auto-reply/tokens.js +2 -0
- package/dist/auto-reply/tool-meta.js +74 -0
- package/dist/auto-reply/transcription.js +57 -0
- package/dist/auto-reply/types.js +1 -0
- package/dist/browser/bridge-server.js +37 -0
- package/dist/browser/cdp.js +382 -0
- package/dist/browser/chrome.js +432 -0
- package/dist/browser/client-actions-core.js +67 -0
- package/dist/browser/client-actions-observe.js +24 -0
- package/dist/browser/client-actions-types.js +1 -0
- package/dist/browser/client-actions.js +3 -0
- package/dist/browser/client-fetch.js +43 -0
- package/dist/browser/client.js +105 -0
- package/dist/browser/config.js +155 -0
- package/dist/browser/constants.js +5 -0
- package/dist/browser/profiles-service.js +124 -0
- package/dist/browser/profiles.js +96 -0
- package/dist/browser/pw-ai.js +2 -0
- package/dist/browser/pw-session.js +144 -0
- package/dist/browser/pw-tools-core.js +363 -0
- package/dist/browser/routes/agent.js +535 -0
- package/dist/browser/routes/basic.js +155 -0
- package/dist/browser/routes/index.js +8 -0
- package/dist/browser/routes/tabs.js +105 -0
- package/dist/browser/routes/utils.js +62 -0
- package/dist/browser/screenshot.js +40 -0
- package/dist/browser/server-context.js +377 -0
- package/dist/browser/server.js +81 -0
- package/dist/browser/target-id.js +18 -0
- package/dist/browser/trash.js +21 -0
- package/dist/canvas-host/a2ui/a2ui.bundle.js +17768 -0
- package/dist/canvas-host/a2ui/index.html +246 -0
- package/dist/canvas-host/a2ui.js +187 -0
- package/dist/canvas-host/server.js +382 -0
- package/dist/channel-web.js +8 -0
- package/dist/cli/browser-cli-actions-input.js +459 -0
- package/dist/cli/browser-cli-actions-observe.js +56 -0
- package/dist/cli/browser-cli-examples.js +31 -0
- package/dist/cli/browser-cli-inspect.js +97 -0
- package/dist/cli/browser-cli-manage.js +286 -0
- package/dist/cli/browser-cli-shared.js +1 -0
- package/dist/cli/browser-cli.js +26 -0
- package/dist/cli/canvas-cli.js +416 -0
- package/dist/cli/cloud-cli.js +336 -0
- package/dist/cli/credential-cli.js +227 -0
- package/dist/cli/cron-cli.js +454 -0
- package/dist/cli/deps.js +17 -0
- package/dist/cli/dns-cli.js +180 -0
- package/dist/cli/gateway-cli.js +665 -0
- package/dist/cli/gateway-rpc.js +20 -0
- package/dist/cli/hooks-cli.js +135 -0
- package/dist/cli/memory-cli.js +101 -0
- package/dist/cli/models-cli.js +248 -0
- package/dist/cli/nodes-camera.js +57 -0
- package/dist/cli/nodes-canvas.js +26 -0
- package/dist/cli/nodes-cli.js +946 -0
- package/dist/cli/nodes-screen.js +37 -0
- package/dist/cli/pairing-cli.js +100 -0
- package/dist/cli/parse-duration.js +20 -0
- package/dist/cli/plugins-cli.js +158 -0
- package/dist/cli/ports.js +97 -0
- package/dist/cli/profile.js +81 -0
- package/dist/cli/program.js +162 -0
- package/dist/cli/prompt.js +19 -0
- package/dist/cli/run-main.js +48 -0
- package/dist/cli/skills-cli.js +132 -0
- package/dist/cli/skills-hub-cli.js +1093 -0
- package/dist/cli/telegram-cli.js +56 -0
- package/dist/cli/tool-connector-cli.js +118 -0
- package/dist/cli/tui-cli.js +35 -0
- package/dist/cli/upstream-sync-cli.js +2833 -0
- package/dist/cli/usage-cli.js +24 -0
- package/dist/cli/wait.js +8 -0
- package/dist/commands/agent-via-gateway.js +115 -0
- package/dist/commands/agent.js +665 -0
- package/dist/commands/antigravity-oauth.js +327 -0
- package/dist/commands/auth-choice-options.js +80 -0
- package/dist/commands/auth-choice.js +134 -0
- package/dist/commands/auth-token.js +31 -0
- package/dist/commands/bootstrap-preset.js +214 -0
- package/dist/commands/capabilities.js +36 -0
- package/dist/commands/chutes-oauth.js +144 -0
- package/dist/commands/claude-md.js +137 -0
- package/dist/commands/config-view.js +11 -0
- package/dist/commands/configure.js +648 -0
- package/dist/commands/credential.js +236 -0
- package/dist/commands/cursor-rules.js +230 -0
- package/dist/commands/doctor-state-migrations.js +358 -0
- package/dist/commands/doctor-ui.js +113 -0
- package/dist/commands/doctor.js +673 -0
- package/dist/commands/health.js +112 -0
- package/dist/commands/identity.js +54 -0
- package/dist/commands/init.js +167 -0
- package/dist/commands/models/aliases.js +85 -0
- package/dist/commands/models/fallbacks.js +123 -0
- package/dist/commands/models/image-fallbacks.js +123 -0
- package/dist/commands/models/list.js +347 -0
- package/dist/commands/models/scan.js +271 -0
- package/dist/commands/models/set-image.js +27 -0
- package/dist/commands/models/set.js +27 -0
- package/dist/commands/models/shared.js +73 -0
- package/dist/commands/models.js +7 -0
- package/dist/commands/onboard-auth.js +101 -0
- package/dist/commands/onboard-channels.js +814 -0
- package/dist/commands/onboard-eve-identity.js +98 -0
- package/dist/commands/onboard-github.js +153 -0
- package/dist/commands/onboard-helpers.js +303 -0
- package/dist/commands/onboard-interactive.js +17 -0
- package/dist/commands/onboard-non-interactive.js +228 -0
- package/dist/commands/onboard-providers.js +829 -0
- package/dist/commands/onboard-quickstart.js +185 -0
- package/dist/commands/onboard-remote.js +120 -0
- package/dist/commands/onboard-skills.js +148 -0
- package/dist/commands/onboard-types.js +1 -0
- package/dist/commands/onboard.js +19 -0
- package/dist/commands/openai-codex-model-default.js +38 -0
- package/dist/commands/poll.js +64 -0
- package/dist/commands/quest.js +27 -0
- package/dist/commands/reset.js +61 -0
- package/dist/commands/send.js +124 -0
- package/dist/commands/sessions-ingest.js +359 -0
- package/dist/commands/sessions.js +212 -0
- package/dist/commands/setup.js +59 -0
- package/dist/commands/signal-install.js +135 -0
- package/dist/commands/skills-manifest.js +235 -0
- package/dist/commands/status.js +139 -0
- package/dist/commands/suggestions.js +54 -0
- package/dist/commands/systemd-linger.js +71 -0
- package/dist/commands/update.js +16 -0
- package/dist/commands/usage-upload.js +27 -0
- package/dist/config/config.js +6 -0
- package/dist/config/defaults.js +140 -0
- package/dist/config/group-policy.js +49 -0
- package/dist/config/includes.js +183 -0
- package/dist/config/io.js +188 -0
- package/dist/config/legacy-migrate.js +13 -0
- package/dist/config/legacy.js +425 -0
- package/dist/config/paths.js +82 -0
- package/dist/config/port-defaults.js +32 -0
- package/dist/config/schema.js +173 -0
- package/dist/config/sessions.js +611 -0
- package/dist/config/talk.js +31 -0
- package/dist/config/types.js +1 -0
- package/dist/config/validation.js +29 -0
- package/dist/config/zod-schema.js +1110 -0
- package/dist/control-ui/assets/index-D8Q5AI4D.js +2393 -0
- package/dist/control-ui/assets/index-D8Q5AI4D.js.map +1 -0
- package/dist/control-ui/assets/index-g06q5Xc3.css +1 -0
- package/dist/control-ui/favicon.ico +0 -0
- package/dist/control-ui/index.html +16 -0
- package/dist/cron/isolated-agent.js +529 -0
- package/dist/cron/normalize.js +73 -0
- package/dist/cron/parse.js +24 -0
- package/dist/cron/run-log.js +72 -0
- package/dist/cron/schedule.js +24 -0
- package/dist/cron/service.js +471 -0
- package/dist/cron/store.js +43 -0
- package/dist/cron/types.js +1 -0
- package/dist/daemon/constants.js +10 -0
- package/dist/daemon/launchd.js +295 -0
- package/dist/daemon/legacy.js +63 -0
- package/dist/daemon/program-args.js +141 -0
- package/dist/daemon/schtasks.js +269 -0
- package/dist/daemon/service.js +69 -0
- package/dist/daemon/systemd.js +332 -0
- package/dist/discord/index.js +2 -0
- package/dist/discord/monitor.js +1089 -0
- package/dist/discord/probe.js +54 -0
- package/dist/discord/send.js +652 -0
- package/dist/discord/token.js +8 -0
- package/dist/entry.js +16 -0
- package/dist/gateway/auth.js +121 -0
- package/dist/gateway/call.js +103 -0
- package/dist/gateway/chat-attachments.js +41 -0
- package/dist/gateway/client.js +180 -0
- package/dist/gateway/config-reload.js +274 -0
- package/dist/gateway/control-ui.js +184 -0
- package/dist/gateway/hooks-mapping.js +282 -0
- package/dist/gateway/hooks.js +168 -0
- package/dist/gateway/net.js +29 -0
- package/dist/gateway/protocol/index.js +62 -0
- package/dist/gateway/protocol/schema.js +577 -0
- package/dist/gateway/server-bridge-subscriptions.js +93 -0
- package/dist/gateway/server-bridge.js +1066 -0
- package/dist/gateway/server-browser.js +11 -0
- package/dist/gateway/server-channels.js +680 -0
- package/dist/gateway/server-chat.js +159 -0
- package/dist/gateway/server-constants.js +8 -0
- package/dist/gateway/server-discovery.js +62 -0
- package/dist/gateway/server-http.js +165 -0
- package/dist/gateway/server-methods/agent-job.js +114 -0
- package/dist/gateway/server-methods/agent.js +254 -0
- package/dist/gateway/server-methods/channels.js +239 -0
- package/dist/gateway/server-methods/chat.js +207 -0
- package/dist/gateway/server-methods/config.js +50 -0
- package/dist/gateway/server-methods/connect.js +6 -0
- package/dist/gateway/server-methods/cron.js +89 -0
- package/dist/gateway/server-methods/health.js +28 -0
- package/dist/gateway/server-methods/models.js +16 -0
- package/dist/gateway/server-methods/nodes.js +294 -0
- package/dist/gateway/server-methods/providers.js +257 -0
- package/dist/gateway/server-methods/send.js +254 -0
- package/dist/gateway/server-methods/sessions.js +382 -0
- package/dist/gateway/server-methods/skills.js +83 -0
- package/dist/gateway/server-methods/system.js +118 -0
- package/dist/gateway/server-methods/talk.js +22 -0
- package/dist/gateway/server-methods/types.js +1 -0
- package/dist/gateway/server-methods/voicewake.js +30 -0
- package/dist/gateway/server-methods/web.js +81 -0
- package/dist/gateway/server-methods/wizard.js +100 -0
- package/dist/gateway/server-methods.js +53 -0
- package/dist/gateway/server-providers.js +687 -0
- package/dist/gateway/server-shared.js +1 -0
- package/dist/gateway/server-utils.js +35 -0
- package/dist/gateway/server.js +1478 -0
- package/dist/gateway/session-utils.js +355 -0
- package/dist/gateway/ws-log.js +343 -0
- package/dist/gateway/ws-logging.js +8 -0
- package/dist/globals.js +41 -0
- package/dist/hooks/gmail-ops.js +236 -0
- package/dist/hooks/gmail-setup-utils.js +278 -0
- package/dist/hooks/gmail-watcher.js +190 -0
- package/dist/hooks/gmail.js +177 -0
- package/dist/imessage/client.js +165 -0
- package/dist/imessage/index.js +3 -0
- package/dist/imessage/monitor.js +365 -0
- package/dist/imessage/probe.js +26 -0
- package/dist/imessage/send.js +83 -0
- package/dist/imessage/targets.js +176 -0
- package/dist/index.js +55 -0
- package/dist/infra/agent-events.js +46 -0
- package/dist/infra/binaries.js +9 -0
- package/dist/infra/bonjour-discovery.js +163 -0
- package/dist/infra/bonjour.js +200 -0
- package/dist/infra/bridge/server.js +564 -0
- package/dist/infra/canvas-host-url.js +54 -0
- package/dist/infra/channel-summary.js +78 -0
- package/dist/infra/control-ui-assets.js +112 -0
- package/dist/infra/dotenv.js +15 -0
- package/dist/infra/env.js +8 -0
- package/dist/infra/errors.js +28 -0
- package/dist/infra/event-log.js +251 -0
- package/dist/infra/gateway-lock.js +8 -0
- package/dist/infra/git-commit.js +91 -0
- package/dist/infra/heartbeat-events.js +21 -0
- package/dist/infra/heartbeat-runner.js +458 -0
- package/dist/infra/heartbeat-wake.js +61 -0
- package/dist/infra/is-main.js +37 -0
- package/dist/infra/json-file.js +21 -0
- package/dist/infra/machine-name.js +40 -0
- package/dist/infra/nexus-root.js +56 -0
- package/dist/infra/node-pairing.js +212 -0
- package/dist/infra/path-env.js +93 -0
- package/dist/infra/ports.js +87 -0
- package/dist/infra/provider-summary.js +80 -0
- package/dist/infra/provider-usage.auth.js +189 -0
- package/dist/infra/provider-usage.fetch.claude.js +129 -0
- package/dist/infra/provider-usage.fetch.codex.js +62 -0
- package/dist/infra/provider-usage.fetch.copilot.js +42 -0
- package/dist/infra/provider-usage.fetch.gemini.js +57 -0
- package/dist/infra/provider-usage.fetch.js +6 -0
- package/dist/infra/provider-usage.fetch.minimax.js +214 -0
- package/dist/infra/provider-usage.fetch.shared.js +11 -0
- package/dist/infra/provider-usage.fetch.zai.js +62 -0
- package/dist/infra/provider-usage.format.js +77 -0
- package/dist/infra/provider-usage.js +145 -0
- package/dist/infra/provider-usage.load.js +54 -0
- package/dist/infra/provider-usage.shared.js +19 -0
- package/dist/infra/provider-usage.types.js +1 -0
- package/dist/infra/restart.js +29 -0
- package/dist/infra/retry.js +16 -0
- package/dist/infra/runtime-guard.js +59 -0
- package/dist/infra/shell-env.js +88 -0
- package/dist/infra/system-events.js +71 -0
- package/dist/infra/system-presence.js +217 -0
- package/dist/infra/tailnet.js +46 -0
- package/dist/infra/tailscale.js +149 -0
- package/dist/infra/unhandled-rejections.js +19 -0
- package/dist/infra/usage-suggestions.js +241 -0
- package/dist/infra/usage-upload.js +290 -0
- package/dist/infra/voicewake.js +78 -0
- package/dist/infra/widearea-dns.js +123 -0
- package/dist/infra/ws.js +13 -0
- package/dist/logger.js +52 -0
- package/dist/logging.js +506 -0
- package/dist/macos/gateway-daemon.js +145 -0
- package/dist/macos/relay.js +49 -0
- package/dist/media/constants.js +33 -0
- package/dist/media/host.js +42 -0
- package/dist/media/image-ops.js +119 -0
- package/dist/media/mime.js +123 -0
- package/dist/media/parse.js +83 -0
- package/dist/media/server.js +64 -0
- package/dist/media/store.js +139 -0
- package/dist/polls.js +43 -0
- package/dist/process/command-queue.js +97 -0
- package/dist/process/exec.js +75 -0
- package/dist/provider-web.js +8 -0
- package/dist/providers/github-copilot-auth.js +123 -0
- package/dist/providers/github-copilot-models.js +35 -0
- package/dist/providers/github-copilot-token.js +11 -0
- package/dist/providers/location.js +48 -0
- package/dist/providers/web/index.js +2 -0
- package/dist/runtime.js +8 -0
- package/dist/sessions/level-overrides.js +9 -0
- package/dist/sessions/send-policy.js +68 -0
- package/dist/signal/client.js +134 -0
- package/dist/signal/daemon.js +69 -0
- package/dist/signal/index.js +3 -0
- package/dist/signal/monitor.js +411 -0
- package/dist/signal/probe.js +46 -0
- package/dist/signal/send.js +91 -0
- package/dist/slack/actions.js +97 -0
- package/dist/slack/index.js +5 -0
- package/dist/slack/monitor.js +1270 -0
- package/dist/slack/probe.js +47 -0
- package/dist/slack/send.js +131 -0
- package/dist/slack/token.js +10 -0
- package/dist/telegram/allowed-updates.js +8 -0
- package/dist/telegram/bot.js +724 -0
- package/dist/telegram/download.js +34 -0
- package/dist/telegram/index.js +4 -0
- package/dist/telegram/monitor.js +47 -0
- package/dist/telegram/pairing-store.js +77 -0
- package/dist/telegram/probe.js +63 -0
- package/dist/telegram/proxy.js +9 -0
- package/dist/telegram/reaction-level.js +45 -0
- package/dist/telegram/send.js +151 -0
- package/dist/telegram/sent-message-cache.js +65 -0
- package/dist/telegram/token.js +30 -0
- package/dist/telegram/update-offset-store.js +61 -0
- package/dist/telegram/webhook-set.js +12 -0
- package/dist/telegram/webhook.js +56 -0
- package/dist/tui/commands.js +87 -0
- package/dist/tui/components/assistant-message.js +16 -0
- package/dist/tui/components/chat-log.js +92 -0
- package/dist/tui/components/custom-editor.js +55 -0
- package/dist/tui/components/selectors.js +8 -0
- package/dist/tui/components/tool-execution.js +111 -0
- package/dist/tui/components/user-message.js +17 -0
- package/dist/tui/gateway-chat.js +140 -0
- package/dist/tui/theme/theme.js +80 -0
- package/dist/tui/tui.js +708 -0
- package/dist/utils.js +153 -0
- package/dist/version.js +18 -0
- package/dist/web/accounts.js +86 -0
- package/dist/web/active-listener.js +25 -0
- package/dist/web/auto-reply.js +1256 -0
- package/dist/web/inbound.js +649 -0
- package/dist/web/login-qr.js +230 -0
- package/dist/web/login.js +71 -0
- package/dist/web/media.js +175 -0
- package/dist/web/outbound.js +102 -0
- package/dist/web/qr-image.js +97 -0
- package/dist/web/reconnect.js +60 -0
- package/dist/web/session.js +370 -0
- package/dist/wizard/clack-prompter.js +56 -0
- package/dist/wizard/onboarding.js +620 -0
- package/dist/wizard/prompts.js +6 -0
- package/dist/wizard/session.js +203 -0
- package/docs/AGENTS.default.md +116 -0
- package/docs/CAPABILITIES.md +444 -0
- package/docs/CNAME +1 -0
- package/docs/NEXUS_CORE_REWRITE_SPEC.md +226 -0
- package/docs/RELEASING.md +69 -0
- package/docs/_config.yml +53 -0
- package/docs/_layouts/default.html +145 -0
- package/docs/agent-assisted-install.md +95 -0
- package/docs/agent-loop.md +61 -0
- package/docs/agent-send.md +21 -0
- package/docs/agent.md +108 -0
- package/docs/android.md +133 -0
- package/docs/architecture.md +114 -0
- package/docs/assets/markdown.css +133 -0
- package/docs/assets/pixel-lobster.svg +60 -0
- package/docs/assets/terminal.css +470 -0
- package/docs/assets/theme.js +55 -0
- package/docs/audio.md +48 -0
- package/docs/automation/nexus-sync.md +371 -0
- package/docs/background-process.md +74 -0
- package/docs/bash.md +32 -0
- package/docs/bedrock.md +71 -0
- package/docs/bonjour.md +159 -0
- package/docs/browser-linux-troubleshooting.md +114 -0
- package/docs/browser.md +293 -0
- package/docs/bun.md +56 -0
- package/docs/camera.md +152 -0
- package/docs/clawd.md +212 -0
- package/docs/concepts/usage-tracking.md +29 -0
- package/docs/configuration.md +1666 -0
- package/docs/control-ui.md +83 -0
- package/docs/cron.md +385 -0
- package/docs/dashboard.md +17 -0
- package/docs/device-models.md +46 -0
- package/docs/discord.md +308 -0
- package/docs/discovery.md +112 -0
- package/docs/docker.md +258 -0
- package/docs/docs.json +105 -0
- package/docs/doctor.md +68 -0
- package/docs/elevated.md +31 -0
- package/docs/faq.md +736 -0
- package/docs/feature-inventory/overview.md +141 -0
- package/docs/feature-inventory/rollout-checklist.md +53 -0
- package/docs/feature-inventory/test-matrix.md +87 -0
- package/docs/feature-inventory.md +9 -0
- package/docs/gateway/configuration-examples.md +221 -0
- package/docs/gateway/configuration.md +172 -0
- package/docs/gateway/cron.md +61 -0
- package/docs/gateway/heartbeat.md +207 -0
- package/docs/gateway/pairing.md +109 -0
- package/docs/gateway-lock.md +28 -0
- package/docs/gateway.md +227 -0
- package/docs/gmail-pubsub.md +191 -0
- package/docs/grammy.md +27 -0
- package/docs/group-messages.md +73 -0
- package/docs/groups.md +130 -0
- package/docs/health.md +28 -0
- package/docs/heartbeat.md +73 -0
- package/docs/home-userspace.md +277 -0
- package/docs/hubs.md +148 -0
- package/docs/images.md +51 -0
- package/docs/imessage.md +94 -0
- package/docs/index.md +196 -0
- package/docs/ios.md +372 -0
- package/docs/linux.md +11 -0
- package/docs/location-command.md +95 -0
- package/docs/location.md +46 -0
- package/docs/logging.md +110 -0
- package/docs/lore.md +131 -0
- package/docs/mac/bun.md +133 -0
- package/docs/mac/canvas.md +161 -0
- package/docs/mac/child-process.md +72 -0
- package/docs/mac/dev-setup.md +81 -0
- package/docs/mac/health.md +28 -0
- package/docs/mac/icon.md +26 -0
- package/docs/mac/logging.md +51 -0
- package/docs/mac/menu-bar.md +69 -0
- package/docs/mac/peekaboo.md +170 -0
- package/docs/mac/permissions.md +40 -0
- package/docs/mac/release.md +76 -0
- package/docs/mac/remote.md +57 -0
- package/docs/mac/signing.md +41 -0
- package/docs/mac/skills.md +27 -0
- package/docs/mac/voice-overlay.md +52 -0
- package/docs/mac/voicewake.md +56 -0
- package/docs/mac/webchat.md +27 -0
- package/docs/mac/xpc.md +40 -0
- package/docs/macos.md +104 -0
- package/docs/model-failover.md +75 -0
- package/docs/models.md +91 -0
- package/docs/multi-agent.md +74 -0
- package/docs/nix.md +95 -0
- package/docs/nodes.md +157 -0
- package/docs/onboarding-config-protocol.md +34 -0
- package/docs/onboarding.md +189 -0
- package/docs/pairing.md +85 -0
- package/docs/plans/cron-add-hardening.md +72 -0
- package/docs/plans/group-policy-hardening.md +121 -0
- package/docs/poll.md +52 -0
- package/docs/prereqs.md +67 -0
- package/docs/presence.md +133 -0
- package/docs/proposals/model-config.md +147 -0
- package/docs/provider-routing.md +25 -0
- package/docs/queue.md +78 -0
- package/docs/reference/templates/AGENTS.md +164 -0
- package/docs/remote-gateway-readme.md +153 -0
- package/docs/remote.md +61 -0
- package/docs/research/memory.md +227 -0
- package/docs/rpc.md +35 -0
- package/docs/security.md +200 -0
- package/docs/session-ingestion.md +119 -0
- package/docs/session-tool.md +154 -0
- package/docs/session.md +85 -0
- package/docs/sessions.md +8 -0
- package/docs/setup.md +131 -0
- package/docs/showcase.md +37 -0
- package/docs/signal.md +122 -0
- package/docs/skills-config.md +58 -0
- package/docs/skills.md +153 -0
- package/docs/slack.md +221 -0
- package/docs/subagents.md +72 -0
- package/docs/tailscale.md +71 -0
- package/docs/talk.md +79 -0
- package/docs/telegram.md +96 -0
- package/docs/templates/AGENTS.md +286 -0
- package/docs/templates/BOOTSTRAP.md +35 -0
- package/docs/templates/IDENTITY.md +17 -0
- package/docs/templates/PROFILE.md +14 -0
- package/docs/templates/SOUL.md +41 -0
- package/docs/templates/TOOLS.md +41 -0
- package/docs/templates/USER.md +8 -0
- package/docs/test.md +43 -0
- package/docs/testing-onboarding-quickstart.md +76 -0
- package/docs/testing-philosophy.md +211 -0
- package/docs/thinking.md +46 -0
- package/docs/timezone.md +40 -0
- package/docs/tools.md +346 -0
- package/docs/troubleshooting.md +257 -0
- package/docs/tui.md +71 -0
- package/docs/typebox.md +42 -0
- package/docs/updating.md +138 -0
- package/docs/usage-cloud-aggregation-spec.md +133 -0
- package/docs/usage-suggestions-pipeline.md +126 -0
- package/docs/voicewake.md +61 -0
- package/docs/web.md +115 -0
- package/docs/webchat.md +34 -0
- package/docs/webhook.md +132 -0
- package/docs/whatsapp-clawd.jpg +0 -0
- package/docs/whatsapp.md +170 -0
- package/docs/windows.md +11 -0
- package/docs/wizard.md +167 -0
- package/package.json +209 -0
- package/skills/1password/SKILL.md +54 -0
- package/skills/1password/docs/setup.md +85 -0
- package/skills/1password/docs/troubleshooting.md +63 -0
- package/skills/1password/references/cli-examples.md +29 -0
- package/skills/1password/references/get-started.md +17 -0
- package/skills/agent-browser/SKILL.md +450 -0
- package/skills/agent-browser/docs/browser-use-eval.md +95 -0
- package/skills/agent-browser/docs/first-tests.md +261 -0
- package/skills/agent-browser/docs/wordle-nyt-eval.js +32 -0
- package/skills/aix/SKILL.md +93 -0
- package/skills/aix/docs/embeddings.md +40 -0
- package/skills/aix/docs/setup.md +58 -0
- package/skills/aix/docs/troubleshooting.md +41 -0
- package/skills/aix/references/sql.md +48 -0
- package/skills/apple-notes/SKILL.md +50 -0
- package/skills/apple-reminders/SKILL.md +67 -0
- package/skills/bear-notes/SKILL.md +79 -0
- package/skills/bird/SKILL.md +32 -0
- package/skills/bird/docs/auth.md +31 -0
- package/skills/bird/docs/troubleshooting.md +31 -0
- package/skills/blogwatcher/SKILL.md +46 -0
- package/skills/blucli/SKILL.md +27 -0
- package/skills/brave-search/SKILL.md +36 -0
- package/skills/brave-search/docs/setup.md +40 -0
- package/skills/brave-search/docs/troubleshooting.md +37 -0
- package/skills/brave-search/docs/usage.md +28 -0
- package/skills/brave-search/scripts/content.mjs +53 -0
- package/skills/brave-search/scripts/search.mjs +79 -0
- package/skills/browser-use-agent-sdk/SKILL.md +90 -0
- package/skills/camsnap/SKILL.md +25 -0
- package/skills/clawdhub/SKILL.md +53 -0
- package/skills/coding-agent/SKILL.md +274 -0
- package/skills/comms/SKILL.md +249 -0
- package/skills/comms/docs/adapters.md +54 -0
- package/skills/comms/docs/setup.md +56 -0
- package/skills/comms/docs/troubleshooting.md +44 -0
- package/skills/comms/references/schema.md +49 -0
- package/skills/computer-use/SKILL.md +204 -0
- package/skills/computer-use/docs/open-interpreter.md +26 -0
- package/skills/computer-use/docs/peekaboo.md +26 -0
- package/skills/computer-use/docs/setup.md +47 -0
- package/skills/computer-use/docs/troubleshooting.md +33 -0
- package/skills/discord/SKILL.md +370 -0
- package/skills/eightctl/SKILL.md +29 -0
- package/skills/eve/SKILL.md +215 -0
- package/skills/eve/docs/dual-account.md +84 -0
- package/skills/eve/docs/intelligence.md +58 -0
- package/skills/eve/docs/setup.md +60 -0
- package/skills/eve/docs/troubleshooting.md +54 -0
- package/skills/eve/scripts/setup-dual-account.sh +125 -0
- package/skills/filesystem/SKILL.md +217 -0
- package/skills/food-order/SKILL.md +41 -0
- package/skills/gemini/SKILL.md +23 -0
- package/skills/gh/SKILL.md +22 -0
- package/skills/gh/docs/usage.md +41 -0
- package/skills/gifgrep/SKILL.md +47 -0
- package/skills/github/SKILL.md +26 -0
- package/skills/github/docs/setup.md +21 -0
- package/skills/github/docs/troubleshooting.md +24 -0
- package/skills/gog/SKILL.md +104 -0
- package/skills/gog/docs/portability.md +94 -0
- package/skills/gog/docs/setup.md +76 -0
- package/skills/gog/docs/troubleshooting.md +94 -0
- package/skills/gog/scripts/cdp/README.md +90 -0
- package/skills/gog/scripts/cdp/add_test_users.py +69 -0
- package/skills/gog/scripts/cdp/auth_add_accounts.py +209 -0
- package/skills/gog/scripts/cdp/auth_add_accounts_manual.py +206 -0
- package/skills/gog/scripts/cdp/create_oauth_client.py +165 -0
- package/skills/gog/scripts/cdp/launch_cdp_chrome.sh +58 -0
- package/skills/google-oauth/SKILL.md +94 -0
- package/skills/goplaces/SKILL.md +30 -0
- package/skills/imsg/SKILL.md +25 -0
- package/skills/json-render/SKILL.md +154 -0
- package/skills/json-render/assets/components/README.md +21 -0
- package/skills/json-render/assets/components/catalog.ts +78 -0
- package/skills/json-render/assets/components/registry.tsx +172 -0
- package/skills/json-render/assets/demo/App.css +397 -0
- package/skills/json-render/assets/demo/App.tsx +897 -0
- package/skills/json-render/assets/demo/README.md +22 -0
- package/skills/json-render/assets/demo/catalog.ts +78 -0
- package/skills/json-render/assets/demo/data/nexus-core.json +31 -0
- package/skills/json-render/assets/demo/index.css +27 -0
- package/skills/json-render/assets/demo/registry.tsx +150 -0
- package/skills/json-render/docs/nexus-state-demo.md +84 -0
- package/skills/json-render/docs/shadcn-preset.md +33 -0
- package/skills/json-render/scripts/create-vite-demo.sh +45 -0
- package/skills/json-render/scripts/llm-server/README.md +33 -0
- package/skills/json-render/scripts/llm-server/catalog.ts +78 -0
- package/skills/json-render/scripts/llm-server/package-lock.json +702 -0
- package/skills/json-render/scripts/llm-server/package.json +18 -0
- package/skills/json-render/scripts/llm-server/server.ts +285 -0
- package/skills/local-places/SERVER_README.md +101 -0
- package/skills/local-places/SKILL.md +91 -0
- package/skills/local-places/pyproject.toml +27 -0
- package/skills/local-places/src/local_places/__init__.py +2 -0
- package/skills/local-places/src/local_places/__pycache__/__init__.cpython-314.pyc +0 -0
- package/skills/local-places/src/local_places/__pycache__/google_places.cpython-314.pyc +0 -0
- package/skills/local-places/src/local_places/__pycache__/main.cpython-314.pyc +0 -0
- package/skills/local-places/src/local_places/__pycache__/schemas.cpython-314.pyc +0 -0
- package/skills/local-places/src/local_places/google_places.py +314 -0
- package/skills/local-places/src/local_places/main.py +65 -0
- package/skills/local-places/src/local_places/schemas.py +107 -0
- package/skills/mcporter/SKILL.md +38 -0
- package/skills/model-usage/SKILL.md +45 -0
- package/skills/model-usage/references/codexbar-cli.md +28 -0
- package/skills/model-usage/scripts/model_usage.py +310 -0
- package/skills/nano-banana-pro/SKILL.md +30 -0
- package/skills/nano-banana-pro/scripts/generate_image.py +169 -0
- package/skills/nano-pdf/SKILL.md +20 -0
- package/skills/nexus-cloud/SKILL.md +53 -0
- package/skills/nexus-cloud/docs/security.md +24 -0
- package/skills/nexus-cloud/docs/setup.md +51 -0
- package/skills/nexus-cloud/docs/troubleshooting.md +28 -0
- package/skills/notion/SKILL.md +156 -0
- package/skills/obsidian/SKILL.md +55 -0
- package/skills/onboarding/SKILL.md +515 -0
- package/skills/onboarding/docs/CAPABILITIES.md +444 -0
- package/skills/onboarding/docs/CAPABILITY_TAXONOMY.md +608 -0
- package/skills/onboarding/docs/CLI_GRAMMAR.md +797 -0
- package/skills/onboarding/docs/CLI_GRAMMAR_CREDENTIALS.md +632 -0
- package/skills/onboarding/docs/CLI_GRAMMAR_ONBOARDING.md +815 -0
- package/skills/onboarding/docs/CLI_GRAMMAR_SKILLS.md +449 -0
- package/skills/onboarding/docs/DOCUMENTATION_OVERVIEW.md +290 -0
- package/skills/onboarding/docs/ENTITY_MODEL.md +582 -0
- package/skills/onboarding/docs/GOAL_STATE_ARCHITECTURE.md +395 -0
- package/skills/onboarding/docs/NEXUS_SYSTEM_OVERVIEW.md +476 -0
- package/skills/onboarding/docs/SKILLS_HUB_SPEC.md +477 -0
- package/skills/onboarding/docs/SKILLS_SPECIFICATION.md +947 -0
- package/skills/onboarding/docs/SKILL_GATEWAY_DESIGN.md +702 -0
- package/skills/onboarding/docs/SKILL_GATEWAY_PRD.md +278 -0
- package/skills/onboarding/docs/SKILL_INVENTORY.md +266 -0
- package/skills/onboarding/docs/STATE_ARCHITECTURE.md +547 -0
- package/skills/onboarding/docs/TROUBLESHOOTING.md +363 -0
- package/skills/onboarding/docs/USER_JOURNEY.md +797 -0
- package/skills/onboarding/docs/WOW_MOMENTS.md +232 -0
- package/skills/onboarding/docs/agent-apple-id.md +289 -0
- package/skills/onboarding/docs/skill-deep-dives/1password.md +367 -0
- package/skills/onboarding/docs/skill-deep-dives/TEMPLATE.md +197 -0
- package/skills/onboarding/docs/skill-deep-dives/aix.md +498 -0
- package/skills/onboarding/docs/skill-deep-dives/bird.md +357 -0
- package/skills/onboarding/docs/skill-deep-dives/brave-search.md +601 -0
- package/skills/onboarding/docs/skill-deep-dives/comms.md +607 -0
- package/skills/onboarding/docs/skill-deep-dives/computer-use.md +599 -0
- package/skills/onboarding/docs/skill-deep-dives/cron-and-heartbeat.md +576 -0
- package/skills/onboarding/docs/skill-deep-dives/eve.md +711 -0
- package/skills/onboarding/docs/skill-deep-dives/github.md +333 -0
- package/skills/onboarding/docs/skill-deep-dives/gog.md +640 -0
- package/skills/onboarding/docs/skill-deep-dives/homebrew-prereqs.md +785 -0
- package/skills/onboarding/docs/skill-deep-dives/nexus-cloud.md +689 -0
- package/skills/onboarding/docs/skill-deep-dives/qmd.md +742 -0
- package/skills/onboarding/docs/skill-deep-dives/telegram.md +379 -0
- package/skills/onboarding/docs/skill-deep-dives/wacli.md +399 -0
- package/skills/onboarding/docs/skill-deep-dives/weather.md +513 -0
- package/skills/onboarding/scripts/ralph/prd.json +215 -0
- package/skills/onboarding/scripts/ralph/progress.txt +99 -0
- package/skills/onboarding/scripts/ralph/prompt.md +87 -0
- package/skills/onboarding/scripts/ralph/ralph.log +84 -0
- package/skills/onboarding/scripts/ralph/ralph.sh +45 -0
- package/skills/onboarding/scripts/setup-cursor-skills.sh +40 -0
- package/skills/openai-image-gen/SKILL.md +31 -0
- package/skills/openai-image-gen/scripts/gen.py +173 -0
- package/skills/openai-whisper/SKILL.md +19 -0
- package/skills/openai-whisper-api/SKILL.md +43 -0
- package/skills/openai-whisper-api/scripts/transcribe.sh +85 -0
- package/skills/openhue/SKILL.md +30 -0
- package/skills/oracle/SKILL.md +105 -0
- package/skills/ordercli/SKILL.md +47 -0
- package/skills/peekaboo/SKILL.md +153 -0
- package/skills/qmd/SKILL.md +32 -0
- package/skills/qmd/docs/mcp.md +30 -0
- package/skills/qmd/docs/ollama.md +42 -0
- package/skills/qmd/docs/setup.md +44 -0
- package/skills/sag/SKILL.md +62 -0
- package/skills/skill-cli-template/SKILL.md +109 -0
- package/skills/skill-creator/scripts/__pycache__/quick_validate.cpython-311.pyc +0 -0
- package/skills/slack/SKILL.md +144 -0
- package/skills/songsee/SKILL.md +29 -0
- package/skills/sonoscli/SKILL.md +26 -0
- package/skills/spotify-player/SKILL.md +34 -0
- package/skills/summarize/SKILL.md +49 -0
- package/skills/telegram/SKILL.md +20 -0
- package/skills/telegram/docs/pairing.md +30 -0
- package/skills/telegram/docs/setup.md +41 -0
- package/skills/telegram/docs/webhook.md +17 -0
- package/skills/things-mac/SKILL.md +61 -0
- package/skills/tmux/SKILL.md +121 -0
- package/skills/tmux/scripts/find-sessions.sh +112 -0
- package/skills/tmux/scripts/wait-for-text.sh +83 -0
- package/skills/trello/SKILL.md +84 -0
- package/skills/upstream-sync/SKILL.md +151 -0
- package/skills/upstream-sync/scripts/auto-port.sh +227 -0
- package/skills/upstream-sync/scripts/check-all.sh +88 -0
- package/skills/upstream-sync/scripts/check-nexus.sh +146 -0
- package/skills/upstream-sync/scripts/check-pi-ai.sh +129 -0
- package/skills/video-frames/SKILL.md +29 -0
- package/skills/video-frames/scripts/frame.sh +81 -0
- package/skills/wacli/SKILL.md +48 -0
- package/skills/wacli/docs/auth.md +21 -0
- package/skills/wacli/docs/backup.md +9 -0
- package/skills/wacli/docs/troubleshooting.md +21 -0
- package/skills/weather/SKILL.md +53 -0
- package/skills/weather/docs/usage.md +40 -0
|
@@ -0,0 +1,689 @@
|
|
|
1
|
+
# Skill Deep-Dive: nexus-cloud
|
|
2
|
+
|
|
3
|
+
**Skill**: `nexus-cloud`
|
|
4
|
+
**Category**: Automation (Backup & Sync)
|
|
5
|
+
**Setup Difficulty**: 🔴 Very Hard
|
|
6
|
+
**Time Estimate**: ~30-45 minutes
|
|
7
|
+
**Platform**: Cross-platform (macOS, Windows, Linux)
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## What It Enables
|
|
12
|
+
|
|
13
|
+
| Capability | Description | Example |
|
|
14
|
+
|------------|-------------|---------|
|
|
15
|
+
| Encrypted workspace backup | Zero-knowledge backup of entire Nexus workspace | `nexus-cloud push -m "Daily backup"` |
|
|
16
|
+
| Cross-device sync | Sync workspace between multiple devices | `nexus-cloud pull` on new device |
|
|
17
|
+
| Version history | Git-like commit history for workspace | `nexus-cloud log` |
|
|
18
|
+
| Rollback capability | Restore workspace to any previous state | `nexus-cloud checkout <commit>` |
|
|
19
|
+
| Selective sync | Exclude sensitive files from backup | `.nexusignore` configuration |
|
|
20
|
+
| E2E encryption | All data encrypted client-side before upload | Server cannot read your data |
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Dependencies
|
|
25
|
+
|
|
26
|
+
### Hard Dependencies (Required)
|
|
27
|
+
- [ ] Cloudflare account (free tier works)
|
|
28
|
+
- [ ] `wrangler` CLI — For deploying Cloudflare Workers
|
|
29
|
+
- [ ] `node` + `npm` — For installing wrangler
|
|
30
|
+
- [ ] R2 storage bucket — Cloudflare's S3-compatible storage
|
|
31
|
+
- [ ] Durable Objects — For storing metadata
|
|
32
|
+
|
|
33
|
+
### Soft Dependencies (Recommended)
|
|
34
|
+
- [ ] `1password` skill — For storing API keys and master password
|
|
35
|
+
- [ ] `git` — Familiar mental model (nexus-cloud is Git-like)
|
|
36
|
+
|
|
37
|
+
### This Skill Enables
|
|
38
|
+
- [ ] Multi-device workflow — Work from laptop, desktop, remote server
|
|
39
|
+
- [ ] Disaster recovery — Lose device? Pull workspace on new machine
|
|
40
|
+
- [ ] Version control — Track changes to workspace over time
|
|
41
|
+
- [ ] Secure backup — Never lose Nexus configuration
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Installation
|
|
46
|
+
|
|
47
|
+
### Prerequisites Check
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
# Check for Node.js
|
|
51
|
+
which node && node --version || echo "❌ Need Node.js"
|
|
52
|
+
|
|
53
|
+
# Check for npm
|
|
54
|
+
which npm && npm --version || echo "❌ Need npm"
|
|
55
|
+
|
|
56
|
+
# Check for wrangler
|
|
57
|
+
which wrangler && echo "✅ wrangler installed" || echo "⚠️ Need to install wrangler"
|
|
58
|
+
|
|
59
|
+
# Check for Cloudflare account
|
|
60
|
+
echo "❓ Do you have a Cloudflare account? (free tier works)"
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Installation Steps
|
|
64
|
+
|
|
65
|
+
#### Step 1: Install Wrangler
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
# Install wrangler globally
|
|
69
|
+
npm install -g wrangler
|
|
70
|
+
|
|
71
|
+
# Or via brew (macOS)
|
|
72
|
+
brew install wrangler
|
|
73
|
+
|
|
74
|
+
# Verify installation
|
|
75
|
+
wrangler --version
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
#### Step 2: Authenticate with Cloudflare
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
# Login to Cloudflare
|
|
82
|
+
wrangler login
|
|
83
|
+
|
|
84
|
+
# This opens browser for OAuth authentication
|
|
85
|
+
# Click "Allow" to grant wrangler access
|
|
86
|
+
|
|
87
|
+
# Verify authentication
|
|
88
|
+
wrangler whoami
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
#### Step 3: Clone/Obtain nexus-cloud Project
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
# Navigate to projects directory
|
|
95
|
+
cd ~/nexus/home/projects
|
|
96
|
+
|
|
97
|
+
# Clone or verify nexus-cloud exists
|
|
98
|
+
ls nexus-cloud || echo "❌ nexus-cloud project not found"
|
|
99
|
+
|
|
100
|
+
cd nexus-cloud
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
#### Step 4: Create R2 Bucket
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
# Create R2 bucket for encrypted blobs
|
|
107
|
+
wrangler r2 bucket create nexus-blobs
|
|
108
|
+
|
|
109
|
+
# Verify bucket created
|
|
110
|
+
wrangler r2 bucket list | grep nexus-blobs
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
#### Step 5: Deploy Cloudflare Worker
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
# Deploy the worker and Durable Object
|
|
117
|
+
cd ~/nexus/home/projects/nexus-cloud
|
|
118
|
+
wrangler deploy
|
|
119
|
+
|
|
120
|
+
# Note the deployed URL (e.g., nexus-cloud.your-account.workers.dev)
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Verification
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
# Check wrangler
|
|
127
|
+
wrangler whoami
|
|
128
|
+
|
|
129
|
+
# Check R2 bucket
|
|
130
|
+
wrangler r2 bucket list | grep nexus-blobs
|
|
131
|
+
|
|
132
|
+
# Check worker deployment
|
|
133
|
+
wrangler deployments list
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Configuration
|
|
139
|
+
|
|
140
|
+
### Step 1: Initialize nexus-cloud Locally
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
# Initialize nexus-cloud (creates encryption keys)
|
|
144
|
+
nexus-cloud init
|
|
145
|
+
|
|
146
|
+
# You'll be prompted for:
|
|
147
|
+
# 1. Worker URL: https://nexus-cloud.your-account.workers.dev
|
|
148
|
+
# 2. Master password: Create a STRONG password (you'll need this for recovery)
|
|
149
|
+
|
|
150
|
+
# CRITICAL: Store master password in 1Password
|
|
151
|
+
op item create \
|
|
152
|
+
--category "Password" \
|
|
153
|
+
--title "Nexus Cloud Master Password" \
|
|
154
|
+
--vault Personal \
|
|
155
|
+
"password=$(echo 'your-master-password-here')"
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### Step 2: Configure .nexusignore
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
# Create .nexusignore to exclude sensitive files
|
|
162
|
+
cat > ~/nexus/home/.nexusignore << 'EOF'
|
|
163
|
+
# Never sync these sensitive directories
|
|
164
|
+
sessions/
|
|
165
|
+
.env
|
|
166
|
+
*credentials*
|
|
167
|
+
*secret*
|
|
168
|
+
*.key
|
|
169
|
+
*.pem
|
|
170
|
+
|
|
171
|
+
# Node modules and build artifacts
|
|
172
|
+
node_modules/
|
|
173
|
+
.next/
|
|
174
|
+
dist/
|
|
175
|
+
build/
|
|
176
|
+
|
|
177
|
+
# Logs
|
|
178
|
+
*.log
|
|
179
|
+
logs/
|
|
180
|
+
|
|
181
|
+
# Temporary files
|
|
182
|
+
.DS_Store
|
|
183
|
+
*.tmp
|
|
184
|
+
*.swp
|
|
185
|
+
EOF
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### Step 3: First Push
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
# Push your workspace to cloud
|
|
192
|
+
nexus-cloud push -m "Initial sync"
|
|
193
|
+
|
|
194
|
+
# This will:
|
|
195
|
+
# 1. Encrypt all files locally
|
|
196
|
+
# 2. Upload encrypted blobs to R2
|
|
197
|
+
# 3. Create initial commit in Durable Object
|
|
198
|
+
|
|
199
|
+
# Check status
|
|
200
|
+
nexus-cloud status
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### Verification
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
# Verify initialization
|
|
207
|
+
ls ~/.nexus-cloud/ && echo "✅ Config exists"
|
|
208
|
+
|
|
209
|
+
# Verify connection
|
|
210
|
+
nexus-cloud status
|
|
211
|
+
|
|
212
|
+
# Verify commit history
|
|
213
|
+
nexus-cloud log
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## User Actions Required
|
|
219
|
+
|
|
220
|
+
1. **Create Cloudflare account**: Sign up at cloudflare.com (free tier)
|
|
221
|
+
2. **Authorize wrangler**: Click "Allow" in browser during `wrangler login`
|
|
222
|
+
3. **Create master password**: Choose a STRONG password for encryption
|
|
223
|
+
4. **Store master password**: Save in 1Password (CRITICAL for recovery)
|
|
224
|
+
5. **Configure .nexusignore**: Review and customize excluded files
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## Common Failure Points
|
|
229
|
+
|
|
230
|
+
### Failure: "Not authenticated with Cloudflare"
|
|
231
|
+
|
|
232
|
+
**Symptom**: `wrangler deploy` fails with authentication error
|
|
233
|
+
|
|
234
|
+
**Cause**: Not logged in to Cloudflare
|
|
235
|
+
|
|
236
|
+
**Recovery**:
|
|
237
|
+
```bash
|
|
238
|
+
# Login to Cloudflare
|
|
239
|
+
wrangler login
|
|
240
|
+
|
|
241
|
+
# Or use API token
|
|
242
|
+
wrangler config set api_token YOUR_TOKEN
|
|
243
|
+
|
|
244
|
+
# Verify
|
|
245
|
+
wrangler whoami
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
**Prevention**: Complete authentication before deploying
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
### Failure: "R2 bucket not found"
|
|
253
|
+
|
|
254
|
+
**Symptom**: Worker deploy fails, R2 bucket doesn't exist
|
|
255
|
+
|
|
256
|
+
**Cause**: Forgot to create R2 bucket
|
|
257
|
+
|
|
258
|
+
**Recovery**:
|
|
259
|
+
```bash
|
|
260
|
+
# Create bucket
|
|
261
|
+
wrangler r2 bucket create nexus-blobs
|
|
262
|
+
|
|
263
|
+
# Update wrangler.toml if using different bucket name
|
|
264
|
+
# [[r2_buckets]]
|
|
265
|
+
# binding = "BUCKET"
|
|
266
|
+
# bucket_name = "nexus-blobs"
|
|
267
|
+
|
|
268
|
+
# Re-deploy
|
|
269
|
+
wrangler deploy
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
**Prevention**: Create R2 bucket before deploying worker
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
### Failure: "Master password lost"
|
|
277
|
+
|
|
278
|
+
**Symptom**: Cannot decrypt workspace after reinstalling
|
|
279
|
+
|
|
280
|
+
**Cause**: Master password not backed up
|
|
281
|
+
|
|
282
|
+
**Recovery**:
|
|
283
|
+
```bash
|
|
284
|
+
# Unfortunately, if master password is lost, data is UNRECOVERABLE
|
|
285
|
+
# This is by design - zero-knowledge encryption
|
|
286
|
+
|
|
287
|
+
# Check 1Password for backup
|
|
288
|
+
op item get "Nexus Cloud Master Password"
|
|
289
|
+
|
|
290
|
+
# If truly lost, start fresh
|
|
291
|
+
rm -rf ~/.nexus-cloud
|
|
292
|
+
nexus-cloud init
|
|
293
|
+
# Create NEW master password and back it up this time
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
**Prevention**: ALWAYS store master password in 1Password immediately after creating
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
### Failure: "Encryption key mismatch"
|
|
301
|
+
|
|
302
|
+
**Symptom**: `nexus-cloud pull` fails with decryption error on new device
|
|
303
|
+
|
|
304
|
+
**Cause**: Used different master password or wrong worker URL
|
|
305
|
+
|
|
306
|
+
**Recovery**:
|
|
307
|
+
```bash
|
|
308
|
+
# Verify worker URL is correct
|
|
309
|
+
cat ~/.nexus-cloud/config.json | grep worker_url
|
|
310
|
+
|
|
311
|
+
# Try pull with correct master password
|
|
312
|
+
nexus-cloud pull
|
|
313
|
+
# Enter the EXACT master password used during init
|
|
314
|
+
|
|
315
|
+
# If still fails, check worker URL matches deployed worker
|
|
316
|
+
wrangler deployments list
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
**Prevention**: Store worker URL and master password together in 1Password
|
|
320
|
+
|
|
321
|
+
---
|
|
322
|
+
|
|
323
|
+
### Failure: "Quota exceeded" on R2
|
|
324
|
+
|
|
325
|
+
**Symptom**: Push fails with storage quota error
|
|
326
|
+
|
|
327
|
+
**Cause**: Free tier R2 limit reached (10GB)
|
|
328
|
+
|
|
329
|
+
**Recovery**:
|
|
330
|
+
```bash
|
|
331
|
+
# Check storage usage
|
|
332
|
+
wrangler r2 bucket list
|
|
333
|
+
|
|
334
|
+
# Clean old commits (not yet implemented - manual cleanup needed)
|
|
335
|
+
# For now: upgrade to paid plan or create new bucket
|
|
336
|
+
|
|
337
|
+
# Or selectively push
|
|
338
|
+
# Add more exclusions to .nexusignore
|
|
339
|
+
echo "large-dir/" >> ~/nexus/home/.nexusignore
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
**Prevention**: Monitor R2 storage usage, exclude large files
|
|
343
|
+
|
|
344
|
+
---
|
|
345
|
+
|
|
346
|
+
### Failure: "Worker timeout"
|
|
347
|
+
|
|
348
|
+
**Symptom**: Large workspace push/pull times out
|
|
349
|
+
|
|
350
|
+
**Cause**: Cloudflare Worker has 30-second CPU time limit
|
|
351
|
+
|
|
352
|
+
**Recovery**:
|
|
353
|
+
```bash
|
|
354
|
+
# Break up sync into smaller chunks
|
|
355
|
+
# Push specific directories
|
|
356
|
+
nexus-cloud push --path skills/ -m "Sync skills"
|
|
357
|
+
nexus-cloud push --path projects/ -m "Sync projects"
|
|
358
|
+
|
|
359
|
+
# Or increase worker timeout (requires paid plan)
|
|
360
|
+
# Edit wrangler.toml:
|
|
361
|
+
# [build]
|
|
362
|
+
# timeout = 60
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
**Prevention**: Keep workspace size reasonable, use .nexusignore
|
|
366
|
+
|
|
367
|
+
---
|
|
368
|
+
|
|
369
|
+
## Automation Opportunities
|
|
370
|
+
|
|
371
|
+
| Step | Automatable? | Tool | Notes |
|
|
372
|
+
|------|--------------|------|-------|
|
|
373
|
+
| Install wrangler | ✅ Yes | bash | `npm install -g wrangler` |
|
|
374
|
+
| Cloudflare login | 🟡 Partial | - | Requires browser OAuth |
|
|
375
|
+
| Create R2 bucket | ✅ Yes | bash | `wrangler r2 bucket create` |
|
|
376
|
+
| Deploy worker | ✅ Yes | bash | `wrangler deploy` |
|
|
377
|
+
| Initialize locally | 🟡 Partial | - | Requires master password input |
|
|
378
|
+
| Push workspace | ✅ Yes | bash | `nexus-cloud push` |
|
|
379
|
+
| Pull workspace | ✅ Yes | bash | `nexus-cloud pull` |
|
|
380
|
+
| Schedule backups | ✅ Yes | cron | Periodic `nexus-cloud push` |
|
|
381
|
+
|
|
382
|
+
### Automation Script: Initial Setup
|
|
383
|
+
|
|
384
|
+
```bash
|
|
385
|
+
#!/bin/bash
|
|
386
|
+
# Automate nexus-cloud setup (requires Cloudflare account)
|
|
387
|
+
|
|
388
|
+
set -e
|
|
389
|
+
|
|
390
|
+
echo "Installing wrangler..."
|
|
391
|
+
npm install -g wrangler
|
|
392
|
+
|
|
393
|
+
echo "⚠️ MANUAL STEP: Authenticate with Cloudflare"
|
|
394
|
+
wrangler login
|
|
395
|
+
# Wait for browser authentication
|
|
396
|
+
|
|
397
|
+
echo "Verifying authentication..."
|
|
398
|
+
wrangler whoami || { echo "❌ Authentication failed"; exit 1; }
|
|
399
|
+
|
|
400
|
+
echo "Creating R2 bucket..."
|
|
401
|
+
wrangler r2 bucket create nexus-blobs
|
|
402
|
+
|
|
403
|
+
echo "Deploying worker..."
|
|
404
|
+
cd ~/nexus/home/projects/nexus-cloud
|
|
405
|
+
wrangler deploy
|
|
406
|
+
|
|
407
|
+
echo "✅ Cloudflare setup complete!"
|
|
408
|
+
echo ""
|
|
409
|
+
echo "Next steps:"
|
|
410
|
+
echo "1. Run: nexus-cloud init"
|
|
411
|
+
echo "2. Enter worker URL: $(wrangler deployments list | head -1)"
|
|
412
|
+
echo "3. Create and store master password in 1Password"
|
|
413
|
+
echo "4. Run: nexus-cloud push -m 'Initial sync'"
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
### Scheduled Backup (Daily)
|
|
417
|
+
|
|
418
|
+
```bash
|
|
419
|
+
# Add to cron or use nexus cron skill
|
|
420
|
+
# Push workspace backup daily at 2 AM
|
|
421
|
+
0 2 * * * cd ~/nexus/home && nexus-cloud push -m "Daily backup $(date +%Y-%m-%d)"
|
|
422
|
+
```
|
|
423
|
+
|
|
424
|
+
---
|
|
425
|
+
|
|
426
|
+
## Wow Moments
|
|
427
|
+
|
|
428
|
+
| Moment | What Happens | When to Demo |
|
|
429
|
+
|--------|--------------|--------------|
|
|
430
|
+
| First encrypted push | Entire workspace backed up, encrypted, can't be read by server | After initial setup |
|
|
431
|
+
| Pull on new device | Full workspace restored with single command | Multi-device use case |
|
|
432
|
+
| Version history | See commit log of workspace changes | After a few syncs |
|
|
433
|
+
| Rollback workspace | Restore to previous state | When demonstrating safety |
|
|
434
|
+
| Zero-knowledge proof | Show encrypted blob - complete gibberish | When discussing security |
|
|
435
|
+
|
|
436
|
+
### Demo Script
|
|
437
|
+
|
|
438
|
+
```
|
|
439
|
+
Agent: "Let me show you how nexus-cloud provides secure workspace backup. First, I'll push your current workspace:"
|
|
440
|
+
|
|
441
|
+
nexus-cloud push -m "Demo backup"
|
|
442
|
+
|
|
443
|
+
Agent: "Your workspace is now backed up to Cloudflare R2. Here's what's important: all encryption happens on YOUR device. The server only sees encrypted blobs."
|
|
444
|
+
|
|
445
|
+
# Show commit history
|
|
446
|
+
nexus-cloud log
|
|
447
|
+
|
|
448
|
+
Agent: "You can see the version history. Now let me show you the most powerful feature - pulling on a new device:"
|
|
449
|
+
|
|
450
|
+
# Simulate new device
|
|
451
|
+
Agent: "On a new machine, you'd just run:"
|
|
452
|
+
# nexus-cloud init
|
|
453
|
+
# nexus-cloud pull
|
|
454
|
+
|
|
455
|
+
Agent: "Your entire workspace would be restored, decrypted locally using your master password. The server never had access to your plaintext data."
|
|
456
|
+
|
|
457
|
+
# Show encrypted blob (if possible)
|
|
458
|
+
Agent: "And here's what the server actually stores - complete gibberish without your password."
|
|
459
|
+
```
|
|
460
|
+
|
|
461
|
+
---
|
|
462
|
+
|
|
463
|
+
## Integration with Other Skills
|
|
464
|
+
|
|
465
|
+
| Skill | Integration | Notes |
|
|
466
|
+
|-------|-------------|-------|
|
|
467
|
+
| **1password** | Store master password and worker URL | CRITICAL for recovery |
|
|
468
|
+
| **cron** | Schedule automatic backups | Daily/hourly workspace sync |
|
|
469
|
+
| **git** | Similar mental model | Both are version control systems |
|
|
470
|
+
| **All skills** | Backs up entire workspace | Skills, configs, data all synced |
|
|
471
|
+
|
|
472
|
+
---
|
|
473
|
+
|
|
474
|
+
## Testing Checklist
|
|
475
|
+
|
|
476
|
+
- [ ] wrangler installed: `wrangler --version`
|
|
477
|
+
- [ ] Authenticated: `wrangler whoami`
|
|
478
|
+
- [ ] R2 bucket created: `wrangler r2 bucket list | grep nexus-blobs`
|
|
479
|
+
- [ ] Worker deployed: `wrangler deployments list`
|
|
480
|
+
- [ ] Local init: `nexus-cloud init`
|
|
481
|
+
- [ ] Master password stored in 1Password
|
|
482
|
+
- [ ] .nexusignore configured
|
|
483
|
+
- [ ] First push succeeds: `nexus-cloud push -m "Test"`
|
|
484
|
+
- [ ] Status shows sync: `nexus-cloud status`
|
|
485
|
+
- [ ] Log shows commits: `nexus-cloud log`
|
|
486
|
+
- [ ] Pull works: `nexus-cloud pull` (test on different directory)
|
|
487
|
+
- [ ] Encrypted blob verification (server stores gibberish)
|
|
488
|
+
|
|
489
|
+
---
|
|
490
|
+
|
|
491
|
+
## Notes for Onboarding Agent
|
|
492
|
+
|
|
493
|
+
- **Complexity warning**: This is the hardest skill to set up (30-45 minutes)
|
|
494
|
+
- **Prerequisites**: Requires Cloudflare account, wrangler, R2, Durable Objects
|
|
495
|
+
- **Master password is CRITICAL**: Emphasize backing up to 1Password
|
|
496
|
+
- **When to recommend**:
|
|
497
|
+
- User has multiple devices
|
|
498
|
+
- User wants secure backup
|
|
499
|
+
- User comfortable with command-line tools
|
|
500
|
+
- User has Cloudflare account or willing to create one
|
|
501
|
+
- **When NOT to recommend**:
|
|
502
|
+
- User is uncomfortable with encryption concepts
|
|
503
|
+
- User doesn't need multi-device sync
|
|
504
|
+
- User prefers Git for version control
|
|
505
|
+
- Single-device user with local backups
|
|
506
|
+
- **Cost considerations**: Cloudflare free tier includes:
|
|
507
|
+
- R2: 10GB storage free
|
|
508
|
+
- Workers: 100k requests/day free
|
|
509
|
+
- Durable Objects: 1M reads + 1M writes free
|
|
510
|
+
- Should be sufficient for most users
|
|
511
|
+
- **Security selling point**: Zero-knowledge encryption - even Cloudflare can't read your data
|
|
512
|
+
- **Alternative**: For simpler backup, suggest Git + private GitHub repo (less secure but easier)
|
|
513
|
+
- **Time estimate breakdown**:
|
|
514
|
+
- Install wrangler: 2 minutes
|
|
515
|
+
- Cloudflare auth: 3 minutes
|
|
516
|
+
- R2 bucket: 2 minutes
|
|
517
|
+
- Deploy worker: 5 minutes
|
|
518
|
+
- Local init: 5 minutes
|
|
519
|
+
- First push: 10-15 minutes (depends on workspace size)
|
|
520
|
+
- Configuration: 5 minutes
|
|
521
|
+
|
|
522
|
+
---
|
|
523
|
+
|
|
524
|
+
## Architecture: How It Works
|
|
525
|
+
|
|
526
|
+
### Data Flow
|
|
527
|
+
|
|
528
|
+
```
|
|
529
|
+
~/nexus/home (plaintext workspace)
|
|
530
|
+
↓
|
|
531
|
+
nexus-cloud push
|
|
532
|
+
↓
|
|
533
|
+
1. Read files (excluding .nexusignore)
|
|
534
|
+
2. Encrypt each file with AES-256
|
|
535
|
+
- Content key: encrypts file contents
|
|
536
|
+
- Metadata key: encrypts filenames
|
|
537
|
+
- Version key: encrypts commit messages
|
|
538
|
+
↓
|
|
539
|
+
Encrypted blobs
|
|
540
|
+
↓
|
|
541
|
+
Upload to Cloudflare R2
|
|
542
|
+
↓
|
|
543
|
+
Commit metadata stored in Durable Object
|
|
544
|
+
```
|
|
545
|
+
|
|
546
|
+
### Pull Process
|
|
547
|
+
|
|
548
|
+
```
|
|
549
|
+
nexus-cloud pull
|
|
550
|
+
↓
|
|
551
|
+
Query Durable Object for latest commit
|
|
552
|
+
↓
|
|
553
|
+
Download encrypted blobs from R2
|
|
554
|
+
↓
|
|
555
|
+
Decrypt locally using master password
|
|
556
|
+
↓
|
|
557
|
+
Restore files to ~/nexus/home
|
|
558
|
+
```
|
|
559
|
+
|
|
560
|
+
### Zero-Knowledge Architecture
|
|
561
|
+
|
|
562
|
+
```
|
|
563
|
+
┌─────────────────────────────────────────────────┐
|
|
564
|
+
│ Your Device │
|
|
565
|
+
│ ┌───────────────────────────────────────────┐ │
|
|
566
|
+
│ │ Master Password (never leaves device) │ │
|
|
567
|
+
│ │ ↓ │ │
|
|
568
|
+
│ │ Derive encryption keys (local only) │ │
|
|
569
|
+
│ │ ↓ │ │
|
|
570
|
+
│ │ Encrypt workspace (local only) │ │
|
|
571
|
+
│ └───────────────────────────────────────────┘ │
|
|
572
|
+
└─────────────────────────────────────────────────┘
|
|
573
|
+
│
|
|
574
|
+
↓ Upload encrypted blobs
|
|
575
|
+
┌─────────────────────────────────────────────────┐
|
|
576
|
+
│ Cloudflare (Server) │
|
|
577
|
+
│ ┌───────────────────────────────────────────┐ │
|
|
578
|
+
│ │ R2: Encrypted blobs (gibberish) │ │
|
|
579
|
+
│ │ Durable Object: Encrypted metadata │ │
|
|
580
|
+
│ │ │ │
|
|
581
|
+
│ │ Server CANNOT decrypt without password │ │
|
|
582
|
+
│ └───────────────────────────────────────────┘ │
|
|
583
|
+
└─────────────────────────────────────────────────┘
|
|
584
|
+
```
|
|
585
|
+
|
|
586
|
+
---
|
|
587
|
+
|
|
588
|
+
## Security & Privacy
|
|
589
|
+
|
|
590
|
+
### What's Encrypted
|
|
591
|
+
|
|
592
|
+
| Data | Encrypted? | Key Used |
|
|
593
|
+
|------|------------|----------|
|
|
594
|
+
| File contents | ✅ Yes | Content key |
|
|
595
|
+
| Filenames | ✅ Yes | Metadata key |
|
|
596
|
+
| Directory structure | ✅ Yes | Metadata key |
|
|
597
|
+
| Commit messages | ✅ Yes | Version key |
|
|
598
|
+
| File sizes | ❌ No | - |
|
|
599
|
+
| Storage totals | ❌ No | - |
|
|
600
|
+
|
|
601
|
+
### Encryption Details
|
|
602
|
+
|
|
603
|
+
- **Algorithm**: AES-256-GCM (Galois/Counter Mode)
|
|
604
|
+
- **Key derivation**: PBKDF2 with 100,000 iterations
|
|
605
|
+
- **Master password**: Never transmitted or stored on server
|
|
606
|
+
- **Keys derived locally**: Content, metadata, version keys all derived from master password
|
|
607
|
+
- **Zero-knowledge**: Server cannot decrypt without master password
|
|
608
|
+
|
|
609
|
+
### Threat Model
|
|
610
|
+
|
|
611
|
+
**Protected Against:**
|
|
612
|
+
- Server compromise (Cloudflare breach)
|
|
613
|
+
- Network eavesdropping (MITM attacks)
|
|
614
|
+
- Unauthorized access to R2 bucket
|
|
615
|
+
- Insider threats (Cloudflare employees)
|
|
616
|
+
|
|
617
|
+
**NOT Protected Against:**
|
|
618
|
+
- Master password compromise (user's responsibility)
|
|
619
|
+
- Malware on local device
|
|
620
|
+
- Physical device theft (if not encrypted at rest)
|
|
621
|
+
- Keyloggers capturing master password
|
|
622
|
+
|
|
623
|
+
### Best Practices
|
|
624
|
+
|
|
625
|
+
1. **Strong master password**: Use 20+ character passphrase
|
|
626
|
+
2. **Store in 1Password**: Back up master password securely
|
|
627
|
+
3. **Device encryption**: Enable FileVault (macOS) or BitLocker (Windows)
|
|
628
|
+
4. **Regular rotation**: Consider rotating master password periodically
|
|
629
|
+
5. **Access control**: Limit who knows master password
|
|
630
|
+
6. **Monitor access**: Review Cloudflare audit logs
|
|
631
|
+
|
|
632
|
+
---
|
|
633
|
+
|
|
634
|
+
## Recovery Scenarios
|
|
635
|
+
|
|
636
|
+
### Scenario 1: Lost Device
|
|
637
|
+
|
|
638
|
+
```bash
|
|
639
|
+
# On new device:
|
|
640
|
+
# 1. Install nexus and nexus-cloud
|
|
641
|
+
# 2. Initialize with same worker URL and master password
|
|
642
|
+
nexus-cloud init
|
|
643
|
+
# Enter worker URL: https://nexus-cloud.your-account.workers.dev
|
|
644
|
+
# Enter master password: [from 1Password]
|
|
645
|
+
|
|
646
|
+
# 3. Pull workspace
|
|
647
|
+
nexus-cloud pull
|
|
648
|
+
|
|
649
|
+
# ✅ Workspace fully restored
|
|
650
|
+
```
|
|
651
|
+
|
|
652
|
+
### Scenario 2: Corrupted Local Workspace
|
|
653
|
+
|
|
654
|
+
```bash
|
|
655
|
+
# Rollback to previous commit
|
|
656
|
+
nexus-cloud log
|
|
657
|
+
# Find commit hash of good state
|
|
658
|
+
|
|
659
|
+
nexus-cloud checkout <commit-hash>
|
|
660
|
+
|
|
661
|
+
# Workspace restored to that point in time
|
|
662
|
+
```
|
|
663
|
+
|
|
664
|
+
### Scenario 3: Forgot Master Password
|
|
665
|
+
|
|
666
|
+
```bash
|
|
667
|
+
# Unfortunately, data is UNRECOVERABLE
|
|
668
|
+
# This is by design - zero-knowledge encryption
|
|
669
|
+
|
|
670
|
+
# Only option: Start fresh
|
|
671
|
+
rm -rf ~/.nexus-cloud
|
|
672
|
+
nexus-cloud init
|
|
673
|
+
# Create NEW master password
|
|
674
|
+
# Store in 1Password IMMEDIATELY
|
|
675
|
+
|
|
676
|
+
# Previous backups are permanently inaccessible
|
|
677
|
+
```
|
|
678
|
+
|
|
679
|
+
---
|
|
680
|
+
|
|
681
|
+
## Changelog
|
|
682
|
+
|
|
683
|
+
| Date | Change |
|
|
684
|
+
|------|--------|
|
|
685
|
+
| 2026-01-12 | Initial deep-dive created |
|
|
686
|
+
|
|
687
|
+
---
|
|
688
|
+
|
|
689
|
+
*Template version: 1.0*
|