@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,371 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Daily NexusBot upstream sync monitoring via cron jobs"
|
|
3
|
+
read_when:
|
|
4
|
+
- Setting up automated upstream monitoring
|
|
5
|
+
- Configuring daily sync checks for nexus and pi-ai
|
|
6
|
+
- Understanding cron job patterns in Nexus
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# NexusBot Sync Automation
|
|
10
|
+
|
|
11
|
+
Monitor nexus and pi-ai upstreams daily using Nexus cron jobs to stay informed about changes that may need porting.
|
|
12
|
+
|
|
13
|
+
## Overview
|
|
14
|
+
|
|
15
|
+
Nexus is a fork of NexusBot and uses pi-ai packages for authentication. To keep nexus current, we need to monitor:
|
|
16
|
+
- **NexusBot repository**: New commits in the main branch
|
|
17
|
+
- **Pi-AI packages**: Version updates for `@mariozechner/pi-agent-core` and `@mariozechner/pi-coding-agent`
|
|
18
|
+
|
|
19
|
+
The `upstream-sync` skill (see `skills/upstream-sync/SKILL.md`) provides scripts to check both upstreams. This document shows how to automate these checks using Nexus cron jobs.
|
|
20
|
+
|
|
21
|
+
## Quick Start
|
|
22
|
+
|
|
23
|
+
Create a daily cron job that runs at 9 AM:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
nexus cron add \
|
|
27
|
+
--name "Daily upstream sync check" \
|
|
28
|
+
--cron "0 9 * * *" \
|
|
29
|
+
--tz "America/Los_Angeles" \
|
|
30
|
+
--session isolated \
|
|
31
|
+
--wake now \
|
|
32
|
+
--message "Run the upstream-sync skill (check-all.sh) and show me a summary of any new commits or version updates." \
|
|
33
|
+
--deliver \
|
|
34
|
+
--provider last
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
This will:
|
|
38
|
+
1. Run daily at 9 AM (Pacific time)
|
|
39
|
+
2. Execute in an isolated session (won't pollute your main session)
|
|
40
|
+
3. Check both nexus and pi-ai for changes
|
|
41
|
+
4. Send you a notification via your last-used channel (WhatsApp, Telegram, etc.)
|
|
42
|
+
|
|
43
|
+
## Cron Job Configuration
|
|
44
|
+
|
|
45
|
+
### Schedule Options
|
|
46
|
+
|
|
47
|
+
**Daily at specific time:**
|
|
48
|
+
```bash
|
|
49
|
+
--cron "0 9 * * *" --tz "America/Los_Angeles"
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**Weekdays only (Mon-Fri):**
|
|
53
|
+
```bash
|
|
54
|
+
--cron "0 9 * * 1-5" --tz "America/Los_Angeles"
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**Every 12 hours:**
|
|
58
|
+
```bash
|
|
59
|
+
--every "12h"
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**One-time check (tomorrow at 9 AM):**
|
|
63
|
+
```bash
|
|
64
|
+
--at "2026-01-10T09:00:00-08:00"
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Session Options
|
|
68
|
+
|
|
69
|
+
**Isolated session (recommended):**
|
|
70
|
+
```bash
|
|
71
|
+
--session isolated --wake now
|
|
72
|
+
```
|
|
73
|
+
- Runs in separate session (`cron:<jobId>`)
|
|
74
|
+
- Won't clutter your main conversation history
|
|
75
|
+
- Can run in parallel with main session
|
|
76
|
+
- Still posts a summary to main when complete
|
|
77
|
+
|
|
78
|
+
**Main session:**
|
|
79
|
+
```bash
|
|
80
|
+
--session main --wake now
|
|
81
|
+
```
|
|
82
|
+
- Runs in your main session
|
|
83
|
+
- Shows full output in conversation history
|
|
84
|
+
- Serialized with other main session activity
|
|
85
|
+
|
|
86
|
+
### Delivery Options
|
|
87
|
+
|
|
88
|
+
**Deliver to last-used provider:**
|
|
89
|
+
```bash
|
|
90
|
+
--deliver --provider last
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
**Deliver to specific provider:**
|
|
94
|
+
```bash
|
|
95
|
+
--deliver --provider whatsapp --to "+1234567890"
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**No delivery (main session summary only):**
|
|
99
|
+
```bash
|
|
100
|
+
# Omit --deliver flag
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Example Configurations
|
|
104
|
+
|
|
105
|
+
### 1. Daily morning check (recommended)
|
|
106
|
+
|
|
107
|
+
Check every morning and get notified via your preferred messaging app:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
nexus cron add \
|
|
111
|
+
--name "Morning upstream sync" \
|
|
112
|
+
--cron "0 8 * * *" \
|
|
113
|
+
--tz "America/Los_Angeles" \
|
|
114
|
+
--session isolated \
|
|
115
|
+
--wake now \
|
|
116
|
+
--message "Check upstream-sync (all sources) and notify me if there are new commits or package updates. Focus on: auth, sessions, gateway, ODU patterns." \
|
|
117
|
+
--deliver \
|
|
118
|
+
--provider last
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### 2. Weekday check (business hours only)
|
|
122
|
+
|
|
123
|
+
Skip weekends:
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
nexus cron add \
|
|
127
|
+
--name "Weekday upstream sync" \
|
|
128
|
+
--cron "0 9 * * 1-5" \
|
|
129
|
+
--tz "America/Los_Angeles" \
|
|
130
|
+
--session isolated \
|
|
131
|
+
--wake now \
|
|
132
|
+
--message "Run upstream-sync check-all.sh and summarize any changes." \
|
|
133
|
+
--deliver \
|
|
134
|
+
--provider last
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### 3. Quiet check (no notifications)
|
|
138
|
+
|
|
139
|
+
Check daily but only add summary to main session (no push notifications):
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
nexus cron add \
|
|
143
|
+
--name "Silent upstream sync" \
|
|
144
|
+
--cron "0 6 * * *" \
|
|
145
|
+
--tz "America/Los_Angeles" \
|
|
146
|
+
--session isolated \
|
|
147
|
+
--wake now \
|
|
148
|
+
--message "Run upstream-sync check-all.sh and summarize findings."
|
|
149
|
+
# Note: no --deliver flag
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### 4. Weekly detailed review
|
|
153
|
+
|
|
154
|
+
Once per week, get a more detailed summary:
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
nexus cron add \
|
|
158
|
+
--name "Weekly upstream review" \
|
|
159
|
+
--cron "0 10 * * 1" \
|
|
160
|
+
--tz "America/Los_Angeles" \
|
|
161
|
+
--session isolated \
|
|
162
|
+
--wake now \
|
|
163
|
+
--message "Run upstream-sync check-all.sh with --limit 20 to show more commits. Review each commit and highlight any that should be ported to nexus, especially: auth changes, session improvements, gateway fixes, ODU patterns, or API updates." \
|
|
164
|
+
--deliver \
|
|
165
|
+
--provider last
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## Managing Cron Jobs
|
|
169
|
+
|
|
170
|
+
### List all cron jobs
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
nexus cron list
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
With JSON output:
|
|
177
|
+
```bash
|
|
178
|
+
nexus cron list --json
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### View specific job details
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
nexus cron list --json | jq '.jobs[] | select(.name | contains("upstream"))'
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Edit existing job
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
# Change schedule
|
|
191
|
+
nexus cron edit <job-id> --cron "0 10 * * *"
|
|
192
|
+
|
|
193
|
+
# Change message
|
|
194
|
+
nexus cron edit <job-id> --message "New message text"
|
|
195
|
+
|
|
196
|
+
# Enable/disable delivery
|
|
197
|
+
nexus cron edit <job-id> --deliver
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### Disable/enable job
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
# Temporarily disable
|
|
204
|
+
nexus cron disable <job-id>
|
|
205
|
+
|
|
206
|
+
# Re-enable
|
|
207
|
+
nexus cron enable <job-id>
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### Remove job
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
nexus cron rm <job-id>
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
### Test job manually
|
|
217
|
+
|
|
218
|
+
Run the job immediately without waiting for schedule:
|
|
219
|
+
|
|
220
|
+
```bash
|
|
221
|
+
nexus cron run <job-id>
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
### View job run history
|
|
225
|
+
|
|
226
|
+
See past executions:
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
nexus cron runs --id <job-id> --limit 10
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
## What to Watch For
|
|
233
|
+
|
|
234
|
+
When you receive upstream sync notifications, prioritize porting these types of changes:
|
|
235
|
+
|
|
236
|
+
### NexusBot commits to review:
|
|
237
|
+
- **Authentication**: OAuth, token management, credential storage
|
|
238
|
+
- **Sessions**: Session format, metadata, compaction
|
|
239
|
+
- **Gateway**: Message routing, provider integration, WebSocket handling
|
|
240
|
+
- **Agent runtime**: ODU patterns, agent lifecycle, control plane
|
|
241
|
+
- **API changes**: New Anthropic SDK features or breaking changes
|
|
242
|
+
|
|
243
|
+
### Pi-AI package updates to review:
|
|
244
|
+
- **Auth/OAuth**: Changes to authentication flow
|
|
245
|
+
- **Session management**: Session format or API changes
|
|
246
|
+
- **Agent runtime**: Core agent behavior or tool changes
|
|
247
|
+
- **Breaking changes**: Version jumps or deprecation notices
|
|
248
|
+
|
|
249
|
+
## Advanced: Custom Filters
|
|
250
|
+
|
|
251
|
+
### Check only NexusBot commits by specific author
|
|
252
|
+
|
|
253
|
+
```bash
|
|
254
|
+
nexus cron add \
|
|
255
|
+
--name "Track Peter's commits" \
|
|
256
|
+
--cron "0 9 * * *" \
|
|
257
|
+
--tz "America/Los_Angeles" \
|
|
258
|
+
--session isolated \
|
|
259
|
+
--wake now \
|
|
260
|
+
--message "Run check-nexus.sh --author peter --limit 10 and summarize the changes." \
|
|
261
|
+
--deliver \
|
|
262
|
+
--provider last
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
### Check only auth-related commits
|
|
266
|
+
|
|
267
|
+
```bash
|
|
268
|
+
nexus cron add \
|
|
269
|
+
--name "Auth change monitor" \
|
|
270
|
+
--cron "0 9 * * *" \
|
|
271
|
+
--tz "America/Los_Angeles" \
|
|
272
|
+
--session isolated \
|
|
273
|
+
--wake now \
|
|
274
|
+
--message "Run check-nexus.sh --grep auth --limit 10 and tell me if any auth changes need porting." \
|
|
275
|
+
--deliver \
|
|
276
|
+
--provider last
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
### Check recent commits only (last 7 days)
|
|
280
|
+
|
|
281
|
+
```bash
|
|
282
|
+
nexus cron add \
|
|
283
|
+
--name "Recent changes only" \
|
|
284
|
+
--every "12h" \
|
|
285
|
+
--session isolated \
|
|
286
|
+
--wake now \
|
|
287
|
+
--message "Run check-nexus.sh --since '7 days ago' --limit 20 and highlight important changes." \
|
|
288
|
+
--deliver \
|
|
289
|
+
--provider last
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
## Troubleshooting
|
|
293
|
+
|
|
294
|
+
### Job not running
|
|
295
|
+
|
|
296
|
+
Check if cron is enabled:
|
|
297
|
+
```bash
|
|
298
|
+
nexus cron status
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
If disabled, enable via config:
|
|
302
|
+
```json5
|
|
303
|
+
{
|
|
304
|
+
"cron": {
|
|
305
|
+
"enabled": true
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
### Job running but no output
|
|
311
|
+
|
|
312
|
+
Check the job's run history:
|
|
313
|
+
```bash
|
|
314
|
+
nexus cron runs --id <job-id> --limit 5
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
Look for errors in the logs:
|
|
318
|
+
```bash
|
|
319
|
+
# Gateway logs show cron execution
|
|
320
|
+
tail -f ~/nexus/state/logs/gateway.log | grep cron
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
### Notification not delivered
|
|
324
|
+
|
|
325
|
+
Verify your provider is configured:
|
|
326
|
+
```bash
|
|
327
|
+
nexus providers list
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
Try running manually to see output:
|
|
331
|
+
```bash
|
|
332
|
+
nexus cron run <job-id> --force
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
### Paths not found (nexus or nexus)
|
|
336
|
+
|
|
337
|
+
Set environment variables in your config or shell:
|
|
338
|
+
```bash
|
|
339
|
+
export NEXUS_PATH="/path/to/nexus"
|
|
340
|
+
export NEXUS_PATH="/path/to/nexus"
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
Or specify in the cron message:
|
|
344
|
+
```bash
|
|
345
|
+
--message "Run check-nexus.sh --nexus-path /path/to/nexus and summarize."
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
## Disabling Sync Monitoring
|
|
349
|
+
|
|
350
|
+
To temporarily stop all upstream sync checks:
|
|
351
|
+
|
|
352
|
+
1. List upstream sync jobs:
|
|
353
|
+
```bash
|
|
354
|
+
nexus cron list | grep -i upstream
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
2. Disable each job:
|
|
358
|
+
```bash
|
|
359
|
+
nexus cron disable <job-id>
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
3. Or remove permanently:
|
|
363
|
+
```bash
|
|
364
|
+
nexus cron rm <job-id>
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
## See Also
|
|
368
|
+
|
|
369
|
+
- [Cron system documentation](../cron.md) - Full cron system RFC
|
|
370
|
+
- [Upstream sync skill](../../skills/upstream-sync/SKILL.md) - Manual sync checking
|
|
371
|
+
- [Gateway documentation](../gateway.md) - Gateway architecture and scheduling
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Background bash execution and process management"
|
|
3
|
+
read_when:
|
|
4
|
+
- Adding or modifying background bash behavior
|
|
5
|
+
- Debugging long-running bash tasks
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Background Bash + Process Tool
|
|
9
|
+
|
|
10
|
+
Nexus runs shell commands through the `bash` tool and keeps long‑running tasks in memory. The `process` tool manages those background sessions.
|
|
11
|
+
|
|
12
|
+
## bash tool
|
|
13
|
+
|
|
14
|
+
Key parameters:
|
|
15
|
+
- `command` (required)
|
|
16
|
+
- `yieldMs` (default 10000): auto‑background after this delay
|
|
17
|
+
- `background` (bool): background immediately
|
|
18
|
+
- `timeout` (seconds, default 1800): kill the process after this timeout
|
|
19
|
+
- `elevated` (bool): run on host if elevated mode is enabled/allowed
|
|
20
|
+
- Need a real TTY? Use the tmux skill.
|
|
21
|
+
- `workdir`, `env`
|
|
22
|
+
|
|
23
|
+
Behavior:
|
|
24
|
+
- Foreground runs return output directly.
|
|
25
|
+
- When backgrounded (explicit or timeout), the tool returns `status: "running"` + `sessionId` and a short tail.
|
|
26
|
+
- Output is kept in memory until the session is polled or cleared.
|
|
27
|
+
|
|
28
|
+
Environment overrides:
|
|
29
|
+
- `PI_BASH_YIELD_MS`: default yield (ms)
|
|
30
|
+
- `PI_BASH_MAX_OUTPUT_CHARS`: in‑memory output cap (chars)
|
|
31
|
+
- `PI_BASH_JOB_TTL_MS`: TTL for finished sessions (ms, bounded to 1m–3h)
|
|
32
|
+
|
|
33
|
+
Config (preferred):
|
|
34
|
+
- `agent.bash.backgroundMs` (default 10000)
|
|
35
|
+
- `agent.bash.timeoutSec` (default 1800)
|
|
36
|
+
- `agent.bash.cleanupMs` (default 1800000)
|
|
37
|
+
|
|
38
|
+
## process tool
|
|
39
|
+
|
|
40
|
+
Actions:
|
|
41
|
+
- `list`: running + finished sessions
|
|
42
|
+
- `poll`: drain new output for a session (also reports exit status)
|
|
43
|
+
- `log`: read the aggregated output (supports `offset` + `limit`)
|
|
44
|
+
- `write`: send stdin (`data`, optional `eof`)
|
|
45
|
+
- `kill`: terminate a background session
|
|
46
|
+
- `clear`: remove a finished session from memory
|
|
47
|
+
- `remove`: kill if running, otherwise clear if finished
|
|
48
|
+
|
|
49
|
+
Notes:
|
|
50
|
+
- Only backgrounded sessions are listed/persisted in memory.
|
|
51
|
+
- Sessions are lost on process restart (no disk persistence).
|
|
52
|
+
- Session logs are only saved to chat history if you run `process poll/log` and the tool result is recorded.
|
|
53
|
+
- `process list` includes a derived `name` (command verb + target) for quick scans.
|
|
54
|
+
- `process log` uses line-based `offset`/`limit` (omit `offset` to grab the last N lines).
|
|
55
|
+
|
|
56
|
+
## Examples
|
|
57
|
+
|
|
58
|
+
Run a long task and poll later:
|
|
59
|
+
```json
|
|
60
|
+
{"tool": "bash", "command": "sleep 5 && echo done", "yieldMs": 1000}
|
|
61
|
+
```
|
|
62
|
+
```json
|
|
63
|
+
{"tool": "process", "action": "poll", "sessionId": "<id>"}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Start immediately in background:
|
|
67
|
+
```json
|
|
68
|
+
{"tool": "bash", "command": "npm run build", "background": true}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Send stdin:
|
|
72
|
+
```json
|
|
73
|
+
{"tool": "process", "action": "write", "sessionId": "<id>", "data": "y\n"}
|
|
74
|
+
```
|
package/docs/bash.md
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Bash tool usage, stdin modes, and TTY support"
|
|
3
|
+
read_when:
|
|
4
|
+
- Using or modifying the bash tool
|
|
5
|
+
- Debugging stdin or TTY behavior
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Bash tool
|
|
9
|
+
|
|
10
|
+
Run shell commands in the workspace. Supports foreground + background execution via `process`.
|
|
11
|
+
|
|
12
|
+
## Parameters
|
|
13
|
+
|
|
14
|
+
- `command` (required)
|
|
15
|
+
- `yieldMs` (default 10000): auto-background after delay
|
|
16
|
+
- `background` (bool): background immediately
|
|
17
|
+
- `timeout` (seconds, default 1800): kill on expiry
|
|
18
|
+
- `elevated` (bool): run on host if elevated mode is enabled/allowed
|
|
19
|
+
- Need a real TTY? Use the tmux skill.
|
|
20
|
+
|
|
21
|
+
## Examples
|
|
22
|
+
|
|
23
|
+
Foreground:
|
|
24
|
+
```json
|
|
25
|
+
{"tool":"bash","command":"ls -la"}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Background + poll:
|
|
29
|
+
```json
|
|
30
|
+
{"tool":"bash","command":"npm run build","yieldMs":1000}
|
|
31
|
+
{"tool":"process","action":"poll","sessionId":"<id>"}
|
|
32
|
+
```
|
package/docs/bedrock.md
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Use Amazon Bedrock (Converse API) models with Nexus"
|
|
3
|
+
read_when:
|
|
4
|
+
- You want to use Amazon Bedrock models with Nexus
|
|
5
|
+
- You need AWS credential/region setup for model calls
|
|
6
|
+
---
|
|
7
|
+
# Amazon Bedrock
|
|
8
|
+
|
|
9
|
+
Nexus can use **Amazon Bedrock** models via pi‑ai’s **Bedrock Converse**
|
|
10
|
+
streaming provider. Bedrock auth uses the **AWS SDK default credential chain**,
|
|
11
|
+
not an API key.
|
|
12
|
+
|
|
13
|
+
## What pi‑ai supports
|
|
14
|
+
|
|
15
|
+
- Provider: `amazon-bedrock`
|
|
16
|
+
- API: `bedrock-converse-stream`
|
|
17
|
+
- Auth: AWS credentials (env vars, shared config, or instance role)
|
|
18
|
+
- Region: `AWS_REGION` or `AWS_DEFAULT_REGION` (default: `us-east-1`)
|
|
19
|
+
|
|
20
|
+
## Setup (manual)
|
|
21
|
+
|
|
22
|
+
1) Ensure AWS credentials are available on the **gateway host**:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
export AWS_ACCESS_KEY_ID="AKIA..."
|
|
26
|
+
export AWS_SECRET_ACCESS_KEY="..."
|
|
27
|
+
export AWS_REGION="us-east-1"
|
|
28
|
+
# Optional:
|
|
29
|
+
export AWS_SESSION_TOKEN="..."
|
|
30
|
+
export AWS_PROFILE="your-profile"
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
2) Add a Bedrock provider and model to your config:
|
|
34
|
+
|
|
35
|
+
```json5
|
|
36
|
+
{
|
|
37
|
+
models: {
|
|
38
|
+
providers: {
|
|
39
|
+
"amazon-bedrock": {
|
|
40
|
+
baseUrl: "https://bedrock-runtime.us-east-1.amazonaws.com",
|
|
41
|
+
api: "bedrock-converse-stream",
|
|
42
|
+
models: [
|
|
43
|
+
{
|
|
44
|
+
id: "anthropic.claude-3-7-sonnet-20250219-v1:0",
|
|
45
|
+
name: "Claude 3.7 Sonnet (Bedrock)",
|
|
46
|
+
reasoning: true,
|
|
47
|
+
input: ["text"],
|
|
48
|
+
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
|
49
|
+
contextWindow: 200000,
|
|
50
|
+
maxTokens: 8192
|
|
51
|
+
}
|
|
52
|
+
]
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
agents: {
|
|
57
|
+
defaults: {
|
|
58
|
+
model: { primary: "amazon-bedrock/anthropic.claude-3-7-sonnet-20250219-v1:0" }
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Notes
|
|
65
|
+
|
|
66
|
+
- Bedrock requires **model access** enabled in your AWS account/region.
|
|
67
|
+
- If you use profiles, set `AWS_PROFILE` on the gateway host.
|
|
68
|
+
- Reasoning support depends on the model; check the Bedrock model card for
|
|
69
|
+
current capabilities.
|
|
70
|
+
- If you prefer a managed key flow, you can also place an OpenAI‑compatible
|
|
71
|
+
proxy in front of Bedrock and configure it as an OpenAI provider instead.
|
package/docs/bonjour.md
ADDED
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Bonjour/mDNS discovery + debugging (Gateway beacons, clients, and common failure modes)"
|
|
3
|
+
read_when:
|
|
4
|
+
- Debugging Bonjour discovery issues on macOS/iOS
|
|
5
|
+
- Changing mDNS service types, TXT records, or discovery UX
|
|
6
|
+
---
|
|
7
|
+
# Bonjour / mDNS discovery
|
|
8
|
+
|
|
9
|
+
Nexus uses Bonjour (mDNS / DNS-SD) as a **LAN-only convenience** to discover a running Gateway bridge transport. It is best-effort and does **not** replace SSH or Tailnet-based connectivity.
|
|
10
|
+
|
|
11
|
+
## Wide-Area Bonjour (Unicast DNS-SD) over Tailscale
|
|
12
|
+
|
|
13
|
+
If you want iOS node auto-discovery while the Gateway is on another network (e.g. Vienna ⇄ London), you can keep the `NWBrowser` UX but switch discovery from multicast mDNS (`local.`) to **unicast DNS-SD** (“Wide-Area Bonjour”) over Tailscale.
|
|
14
|
+
|
|
15
|
+
High level:
|
|
16
|
+
|
|
17
|
+
1) Run a DNS server on the gateway host (reachable via tailnet IP).
|
|
18
|
+
2) Publish DNS-SD records for `_nexus-bridge._tcp` in a dedicated zone (example: `nexus.internal.`).
|
|
19
|
+
3) Configure Tailscale **split DNS** so `nexus.internal` resolves via that DNS server for clients (including iOS).
|
|
20
|
+
|
|
21
|
+
Nexus standardizes on the discovery domain `nexus.internal.` for this mode. iOS/Android nodes browse both `local.` and `nexus.internal.` automatically (no per-device knob).
|
|
22
|
+
|
|
23
|
+
### Gateway config (recommended)
|
|
24
|
+
|
|
25
|
+
On the gateway host (the machine running the Gateway bridge), add to `~/nexus/state/nexus.json` (JSON5):
|
|
26
|
+
|
|
27
|
+
```json5
|
|
28
|
+
{
|
|
29
|
+
bridge: { bind: "tailnet" }, // tailnet-only (recommended)
|
|
30
|
+
discovery: { wideArea: { enabled: true } } // enables nexus.internal DNS-SD publishing
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### One-time DNS server setup (gateway host)
|
|
35
|
+
|
|
36
|
+
On the gateway host (macOS), run:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
nexus dns setup --apply
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
This installs CoreDNS and configures it to:
|
|
43
|
+
- listen on port 53 **only** on the gateway’s Tailscale interface IPs
|
|
44
|
+
- serve the zone `nexus.internal.` from the gateway-owned zone file `~/nexus/state/dns/nexus.internal.db`
|
|
45
|
+
|
|
46
|
+
The Gateway writes/updates that zone file when `discovery.wideArea.enabled` is true.
|
|
47
|
+
|
|
48
|
+
Validate from any tailnet-connected machine:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
dns-sd -B _nexus-bridge._tcp nexus.internal.
|
|
52
|
+
dig @<TAILNET_IPV4> -p 53 _nexus-bridge._tcp.nexus.internal PTR +short
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Tailscale DNS settings
|
|
56
|
+
|
|
57
|
+
In the Tailscale admin console:
|
|
58
|
+
|
|
59
|
+
- Add a nameserver pointing at the gateway’s tailnet IP (UDP/TCP 53).
|
|
60
|
+
- Add split DNS so the domain `nexus.internal` uses that nameserver.
|
|
61
|
+
|
|
62
|
+
Once clients accept tailnet DNS, iOS nodes can browse `_nexus-bridge._tcp` in `nexus.internal.` without multicast.
|
|
63
|
+
Wide-area beacons also include `tailnetDns` (when available) so the macOS app can auto-fill SSH targets off-LAN.
|
|
64
|
+
|
|
65
|
+
### Bridge listener security (recommended)
|
|
66
|
+
|
|
67
|
+
The bridge port (default `18790`) is a plain TCP service. By default it binds to `0.0.0.0`, which makes it reachable from *any* interface on the gateway machine (LAN/Wi‑Fi/Tailscale).
|
|
68
|
+
|
|
69
|
+
For a tailnet-only setup, bind it to the Tailscale IP instead:
|
|
70
|
+
|
|
71
|
+
- Set `bridge.bind: "tailnet"` in `~/nexus/state/nexus.json`.
|
|
72
|
+
- Restart the Gateway (or restart the macOS menubar app via `./scripts/restart-mac.sh` on that machine).
|
|
73
|
+
|
|
74
|
+
This keeps the bridge reachable only from devices on your tailnet (while still listening on loopback for local/SSH port-forwards).
|
|
75
|
+
|
|
76
|
+
## What advertises
|
|
77
|
+
|
|
78
|
+
Only the **Node Gateway** (`nexus` / `nexus gateway`) advertises Bonjour beacons.
|
|
79
|
+
|
|
80
|
+
- Implementation: `src/infra/bonjour.ts`
|
|
81
|
+
- Gateway wiring: `src/gateway/server.ts`
|
|
82
|
+
|
|
83
|
+
## Service types
|
|
84
|
+
|
|
85
|
+
- `_nexus-bridge._tcp` — bridge transport beacon (used by macOS/iOS/Android nodes).
|
|
86
|
+
|
|
87
|
+
## TXT keys (non-secret hints)
|
|
88
|
+
|
|
89
|
+
The Gateway advertises small non-secret hints to make UI flows convenient:
|
|
90
|
+
|
|
91
|
+
- `role=gateway`
|
|
92
|
+
- `lanHost=<hostname>.local`
|
|
93
|
+
- `sshPort=<port>` (defaults to 22 when not overridden)
|
|
94
|
+
- `gatewayPort=<port>` (informational; the Gateway WS is typically loopback-only)
|
|
95
|
+
- `bridgePort=<port>` (only when bridge is enabled)
|
|
96
|
+
- `canvasPort=<port>` (only when the canvas host is enabled + reachable; default `18793`; serves `/__nexus__/canvas/`)
|
|
97
|
+
- `cliPath=<path>` (optional; absolute path to a runnable `nexus` entrypoint or binary)
|
|
98
|
+
- `tailnetDns=<magicdns>` (optional hint; auto-detected from Tailscale when available; may be absent)
|
|
99
|
+
|
|
100
|
+
## Debugging on macOS
|
|
101
|
+
|
|
102
|
+
Useful built-in tools:
|
|
103
|
+
|
|
104
|
+
- Browse instances:
|
|
105
|
+
- `dns-sd -B _nexus-bridge._tcp local.`
|
|
106
|
+
- Resolve one instance (replace `<instance>`):
|
|
107
|
+
- `dns-sd -L "<instance>" _nexus-bridge._tcp local.`
|
|
108
|
+
|
|
109
|
+
If browsing shows instances but resolving fails, you’re usually hitting a LAN policy / multicast issue.
|
|
110
|
+
|
|
111
|
+
## Debugging in Gateway logs
|
|
112
|
+
|
|
113
|
+
The Gateway writes a rolling log file (printed on startup as `gateway log file: ...`).
|
|
114
|
+
|
|
115
|
+
Look for `bonjour:` lines, especially:
|
|
116
|
+
|
|
117
|
+
- `bonjour: advertise failed ...` (probing/announce failure)
|
|
118
|
+
- `bonjour: ... name conflict resolved` / `hostname conflict resolved`
|
|
119
|
+
- `bonjour: watchdog detected non-announced service; attempting re-advertise ...` (self-heal attempt after sleep/interface churn)
|
|
120
|
+
|
|
121
|
+
## Debugging on iOS node
|
|
122
|
+
|
|
123
|
+
The iOS node app discovers bridges via `NWBrowser` browsing `_nexus-bridge._tcp`.
|
|
124
|
+
|
|
125
|
+
To capture what the browser is doing:
|
|
126
|
+
|
|
127
|
+
- Settings → Bridge → Advanced → enable **Discovery Debug Logs**
|
|
128
|
+
- Settings → Bridge → Advanced → open **Discovery Logs** → reproduce the “Searching…” / “No bridges found” case → **Copy**
|
|
129
|
+
|
|
130
|
+
The log includes browser state transitions (`ready`, `waiting`, `failed`, `cancelled`) and result-set changes (added/removed counts).
|
|
131
|
+
|
|
132
|
+
## Common failure modes
|
|
133
|
+
|
|
134
|
+
- **Bonjour doesn’t cross networks**: London/Vienna style setups require Tailnet (MagicDNS/IP) or SSH.
|
|
135
|
+
- **Multicast blocked**: some Wi‑Fi networks (enterprise/hotels) disable mDNS; expect “no results”.
|
|
136
|
+
- **Sleep / interface churn**: macOS may temporarily drop mDNS results when switching networks; retry.
|
|
137
|
+
- **Browse works but resolve fails (iOS “NoSuchRecord”)**: make sure the advertiser publishes a valid SRV target hostname.
|
|
138
|
+
- Implementation detail: `@homebridge/ciao` defaults `hostname` to the *service instance name* when `hostname` is omitted. If your instance name contains spaces/parentheses, some resolvers can fail to resolve the implied A/AAAA record.
|
|
139
|
+
- Fix: set an explicit DNS-safe `hostname` (single label; no `.local`) in `src/infra/bonjour.ts`.
|
|
140
|
+
|
|
141
|
+
## Escaped instance names (`\\032`)
|
|
142
|
+
Bonjour/DNS-SD often escapes bytes in service instance names as decimal `\\DDD` sequences (e.g. spaces become `\\032`).
|
|
143
|
+
|
|
144
|
+
- This is normal at the protocol level.
|
|
145
|
+
- UIs should decode for display (iOS uses `BonjourEscapes.decode` in `apps/shared/NexusKit`).
|
|
146
|
+
|
|
147
|
+
## Disabling / configuration
|
|
148
|
+
|
|
149
|
+
- `NEXUS_DISABLE_BONJOUR=1` disables advertising.
|
|
150
|
+
- `NEXUS_BRIDGE_ENABLED=0` disables the bridge listener (and therefore the bridge beacon).
|
|
151
|
+
- `bridge.bind` / `bridge.port` in `~/nexus/state/nexus.json` control bridge bind/port (preferred).
|
|
152
|
+
- `NEXUS_BRIDGE_HOST` / `NEXUS_BRIDGE_PORT` still work as a back-compat override when `bridge.bind` / `bridge.port` are not set.
|
|
153
|
+
- `NEXUS_SSH_PORT` overrides the SSH port advertised in `_nexus-bridge._tcp`.
|
|
154
|
+
- `NEXUS_TAILNET_DNS` publishes a `tailnetDns` hint (MagicDNS) in `_nexus-bridge._tcp`. If unset, the gateway auto-detects Tailscale and publishes the MagicDNS name when possible.
|
|
155
|
+
|
|
156
|
+
## Related docs
|
|
157
|
+
|
|
158
|
+
- Discovery policy and transport selection: [`docs/discovery.md`](https://docs.nexus.bot/discovery)
|
|
159
|
+
- Node pairing + approvals: [`docs/gateway/pairing.md`](https://docs.nexus.bot/gateway/pairing)
|