feat: add Bezalel Tailscale bootstrap scaffold (#535) #733
Closed
Rockachopa
wants to merge 0 commits from
fix/535 into main
pull from: fix/535
merge into: Timmy_Foundation:main
Timmy_Foundation:main
Timmy_Foundation:fix/669
Timmy_Foundation:fix/666
Timmy_Foundation:fix/671
Timmy_Foundation:fix/670
Timmy_Foundation:sprint/issue-808
Timmy_Foundation:fix/667
Timmy_Foundation:sprint/issue-807
Timmy_Foundation:sprint/issue-805
Timmy_Foundation:fix/680
Timmy_Foundation:fix/562-ci-pipeline-docs
Timmy_Foundation:fix/792-grounding
Timmy_Foundation:sprint/issue-802
Timmy_Foundation:fix/683
Timmy_Foundation:fix/793-source-distinction
Timmy_Foundation:fix/791-crisis-detector
Timmy_Foundation:fix/794-audit-trail
Timmy_Foundation:feat/794-audit-trail
Timmy_Foundation:feat/694-secrets-rotation-cli
Timmy_Foundation:sprint/issue-796
Timmy_Foundation:sprint/issue-795
Timmy_Foundation:sprint/issue-790
Timmy_Foundation:sprint/issue-789
Timmy_Foundation:claude/issue-545
Timmy_Foundation:fix/582
Timmy_Foundation:fix/693
Timmy_Foundation:fix/749
Timmy_Foundation:sprint/issue-783
Timmy_Foundation:gemini/issue-552
Timmy_Foundation:sprint/issue-782
Timmy_Foundation:fix/545
Timmy_Foundation:fix/567
Timmy_Foundation:fix/662
Timmy_Foundation:fix/528
Timmy_Foundation:fix/533
Timmy_Foundation:fix/534-evennia-settings
Timmy_Foundation:fix/536-bezalel-evennia-world
Timmy_Foundation:fix/543
Timmy_Foundation:fix/666-genome-template
Timmy_Foundation:fix/665-genome-pipeline-status
Timmy_Foundation:fix/671-playground-genome
Timmy_Foundation:fix/715-smoke-workflow-fix
Timmy_Foundation:fix/693-backup-pipeline
Timmy_Foundation:sprint/issue-765
Timmy_Foundation:fix/685
Timmy_Foundation:sprint/issue-764
Timmy_Foundation:fix/568-mempalace-evaluation
Timmy_Foundation:fix/681-burn-fleet-genome
Timmy_Foundation:fix/672
Timmy_Foundation:fix/692-sovereign-dns
Timmy_Foundation:fix/691
Timmy_Foundation:burn/749-1776303595
Timmy_Foundation:fix/529-solar-deployment
Timmy_Foundation:fix/677-evennia-local-world
Timmy_Foundation:fix/672-nexus-genome
Timmy_Foundation:sprint/issue-751
Timmy_Foundation:fix/674
Timmy_Foundation:fix/679-turboquant-genome
Timmy_Foundation:fix/685-triage-cadence
Timmy_Foundation:research/long-context-vs-rag
Timmy_Foundation:burn/716-1776264183
Timmy_Foundation:sprint/issue-746
Timmy_Foundation:burn/715-1776264218
Timmy_Foundation:fix/716
Timmy_Foundation:sprint/issue-743
Timmy_Foundation:sprint/issue-742
Timmy_Foundation:burn/715-1776264183
Timmy_Foundation:sprint/issue-740
Timmy_Foundation:fix/682
Timmy_Foundation:fix/530
Timmy_Foundation:fix/534
Timmy_Foundation:fix/531
Timmy_Foundation:fix/570
Timmy_Foundation:fix/544
Timmy_Foundation:fix/648
Timmy_Foundation:fix/547
Timmy_Foundation:fix/549
Timmy_Foundation:fix/532
Timmy_Foundation:fix/550
Timmy_Foundation:fix/681
Timmy_Foundation:fix/552
Timmy_Foundation:fix/551
Timmy_Foundation:fix/536
Timmy_Foundation:fix/553
Timmy_Foundation:fix/568
Timmy_Foundation:fix/562
Timmy_Foundation:fix/668
Timmy_Foundation:fix/548
Timmy_Foundation:fix/665
Timmy_Foundation:fix/673
Timmy_Foundation:fix/694
Timmy_Foundation:fix/692
Timmy_Foundation:fix/675
Timmy_Foundation:fix/691-qa-triage
Timmy_Foundation:fix/683-wolf-genome
Timmy_Foundation:burn/667-1776219200
Timmy_Foundation:fix/678
Timmy_Foundation:fix/676
Timmy_Foundation:fix/677
Timmy_Foundation:fix/679
Timmy_Foundation:fix/662-backlog-cleanup
Timmy_Foundation:burn/667-1776218260
Timmy_Foundation:burn/672-1776218242
Timmy_Foundation:burn/667-1776217964
Timmy_Foundation:sprint/issue-685
Timmy_Foundation:process/1459-backlog-triage
Timmy_Foundation:sprint/issue-689
Timmy_Foundation:sprint/issue-663
Timmy_Foundation:dispatch/576-1776180746
Timmy_Foundation:docs/654-27b-test-omission
Timmy_Foundation:am/576-1776166469
Timmy_Foundation:am/656-1776166469
Timmy_Foundation:docs/652-cron-bias-mitigation
Timmy_Foundation:whip/575-1776128804
Timmy_Foundation:fix/650-big-brain-test-omission
Timmy_Foundation:dawn/576-1776130053
Timmy_Foundation:triage/576-1776129677
Timmy_Foundation:queue/583-1776129201
Timmy_Foundation:q/576-1776129480
Timmy_Foundation:burn/516-1776130000
Timmy_Foundation:q/579-1776129480
Timmy_Foundation:fix/640-vps-gitea-heartbeat
Timmy_Foundation:whip/576-1776128804
Timmy_Foundation:whip/584-1776127281
Timmy_Foundation:whip/579-1776128804
Timmy_Foundation:whip/583-1776128804
Timmy_Foundation:whip/578-1776128804
Timmy_Foundation:whip/586-1776127532
Timmy_Foundation:whip/578-1776127532
Timmy_Foundation:whip/579-1776127532
Timmy_Foundation:whip/583-1776127532
Timmy_Foundation:whip/576-1776127532
Timmy_Foundation:burn/583-1776126523
Timmy_Foundation:burn/585-1776126523
Timmy_Foundation:burn/584-1776126523
Timmy_Foundation:burn/581-1776126523
Timmy_Foundation:burn/587-1776125702
Timmy_Foundation:burn/586-1776125702
Timmy_Foundation:burn/602-1776125702
Timmy_Foundation:burn/590-1776125702
Timmy_Foundation:burn/590-1776120221
Timmy_Foundation:burn/602-1776120221
Timmy_Foundation:burn/587-1776120221
Timmy_Foundation:burn/607-1776120221
Timmy_Foundation:burn/579-1776117807
Timmy_Foundation:burn/573-1776117802
Timmy_Foundation:burn/577-1776117806
Timmy_Foundation:burn/574-1776117803
Timmy_Foundation:burn/tower-dialogue-508
Timmy_Foundation:burn/worktree-cleanup-507
Timmy_Foundation:burn/tower-arc-510
Timmy_Foundation:burn/tower-trust-509
Timmy_Foundation:burn/pytest-fix-607
Timmy_Foundation:ci/fix-secret-scan
Timmy_Foundation:fix/610-telemetry-and-corrupted-files
Timmy_Foundation:research/rag-context-framework
Timmy_Foundation:perplexity/waste-audit-2026-04-13
Timmy_Foundation:perplexity/fix-overnight-loop-provider
Timmy_Foundation:perplexity/anthropic-ban-remediation
Timmy_Foundation:perplexity/ops-runbook-index
Timmy_Foundation:doctrine/hermes-maxi-manifesto
Timmy_Foundation:perplexity/hermes-maxi-manifesto
Timmy_Foundation:feat/add-988-crisis-protocol
Timmy_Foundation:purge/openclaw
Timmy_Foundation:census/hermes-agent
Timmy_Foundation:fix/add-smoke-test
Timmy_Foundation:burn/20260409-2107-sovereign-stack
Timmy_Foundation:harmony-resolutions-v1
Timmy_Foundation:harden-soul-anti-claude
Timmy_Foundation:groq/issue-575
Timmy_Foundation:groq/issue-576
Timmy_Foundation:groq/issue-578
Timmy_Foundation:fix/allegro-kimi-provider
Timmy_Foundation:bezalel/fleet-health-probe
Timmy_Foundation:gemini/issue-564
Timmy_Foundation:gemini/issue-558
Timmy_Foundation:timmy/mempalace-eval
Timmy_Foundation:allegro/greptard-memory-report
Timmy_Foundation:timmy/greptard-memory-report
Timmy_Foundation:fix/kimi-heartbeat-queue-truth
Timmy_Foundation:feat/dynamic-dispatch-optimizer
Timmy_Foundation:feat/sovereign-memory-explorer
Timmy_Foundation:feat/failover-monitor-resilience
Timmy_Foundation:feat/active-sovereign-review-gate
Timmy_Foundation:feat/ultra-low-latency-telemetry
Timmy_Foundation:feat/sovereign-review-gate
Timmy_Foundation:feat/sovereign-social-evennia
Timmy_Foundation:feat/sovereign-health-dashboard
Timmy_Foundation:feat/kimiclaw-heartbeat-launchd
Timmy_Foundation:feat/issue-43-video-decomposition
Timmy_Foundation:codex/workflow-docs-cutover
Timmy_Foundation:security/author-whitelist-132
Timmy_Foundation:feat/sovereign-finance-phase-22
Timmy_Foundation:feat/sovereign-evolution-redistribution
Timmy_Foundation:chore/check-in-local-work
Timmy_Foundation:soul-hygiene
Timmy_Foundation:feature/uni-wizard-v4-production
Timmy_Foundation:feature/scorecard-generator
Timmy_Foundation:feature/uni-wizard
Timmy_Foundation:feature/vps-provisioning
Timmy_Foundation:feature/syncthing-setup
Timmy_Foundation:feature/timmy-bridge-epic
Timmy_Foundation:alexander/wizard-houses-ezra-bezalel
Labels
Clear labels
alembic
architecture
assigned-claw-code
assigned-kimi
assigned-sonnet
auth-needed
batch-pipeline
bizzalo
blocker
building
claw
claw-code-done
claw-code-in-progress
deadline-7am
epic
fleet
golden_bilbo
harness-engineering
intel
kimi-done
kimi-in-progress
milestone
morning-report
phase-1
phase-2
phase-3
phase-4
phase-5
phase-6
progression
project
resource
runtime
saiyah
sonnet-ready
study
substratum
substratum:invoke
tension
throughput-10x
token-masterplan
urgent
velocity-engine
The Alchemical Vessel - Kimi-powered transformation
Auto-created architecture label
Queued for Code Claw (qwen/openrouter)
Dispatched to Kimi via OpenClaw
auth-needed
Token masterplan batch pipeline
bizzalo
blocker
Claw Code runtime (Rust)
Code Claw completed this task
Code Claw is actively working
deadline-7am
Parent tracking issue
Bilbo at peak performance - max churn, fast responses
Auto-created harness-engineering label
Competitive intelligence
Kimi completed this task
Kimi is actively working on this
morning-report
Runtime abstraction layer
Auto-created saiyah label
Learning from external source code
The dissolution engine - runtime layer
Trigger Substratum execution
throughput-10x label
token-masterplan label
urgent
Auto-generated by velocity engine
No Label
Milestone
No items
No Milestone
Projects
Clear projects
No project
Assignees
KimiClaw
Rockachopa
Timmy
allegro
antigravity
bezalel
claude
claw-code
codex-agent
ezra
gemini
google
grok
hermes
kimi
manus
perplexity
sonnet
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: Timmy_Foundation/timmy-home#733
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "fix/535"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
scripts/bezalel_tailscale_bootstrap.pyas a safe-by-default bootstrap harness for Tailscale on Bezalelcurl -fsSL https://tailscale.com/install.sh | shtailscale up --authkey ... --ssh --hostname bezalelauthorized_keystests/test_bezalel_tailscale_bootstrap.pyWhy this PR uses Refs, not Closes
The issue asks for a live Tailscale install on Bezalel plus live authorization on the tailnet. I do not have the actual Tailscale auth key from the admin console in this issue context, so I cannot honestly claim the real VPS was joined.
This PR lands the tested bootstrap scaffold needed to perform that work safely once the auth key is provided.
Verification
python3 -m py_compile scripts/bezalel_tailscale_bootstrap.pypytest -q tests/test_bezalel_tailscale_bootstrap.py->5 passedpytest -q tests->148 passed, 19 warningspython3 scripts/bezalel_tailscale_bootstrap.py --auth-key tskey-auth-proof --ssh-public-key 'ssh-ed25519 AAAAPROOF timmy@mac' --script-out <temp> --jsontailscale up --authkey ... --ssh --hostname bezalelauthorized_keysappend guard100.124.176.28and100.126.61.75Current-state note
The issue body references the older Bezalel public IP
104.131.15.18. The current ops runbook identifies the live Bezalel VPS as159.203.146.185, so the scaffold defaults to that host and avoids baking the stale IP into the generated peer logic.Refs #535
Auto-approved: clean merge, no conflicts, no CI failures.
Review: APPROVED
Well-designed bootstrap scaffold. Safe by default (print mode), with explicit
--applygate for actual SSH execution.Strengths:
--auth-keyand--auth-key-file, avoiding credentials in shell historygrep -qxFto avoid duplicates -- correct approachshlex.quote()is used consistently for shell injection preventionparse_tailscale_status()extracts a clean summary from the verbose Tailscale JSONMinor observations (non-blocking):
build_remote_scriptfunction usesset -euo pipefailwhich means the first failedping -c 1will abort the script before reaching subsequent peers. Consider adding|| echo PING_FAIL:{name}:{ip}to each ping line so all peers are tested.run_remotefunction sends the SSH command to execute a script atremote_script_path, but the script needs to be uploaded first (e.g., viascp). The current flow writes locally to--script-outbut does not copy it to the remote host before running. This would fail on--applyunless the user manually copies the script. Consider adding anscpstep or usingssh ... < scriptpiping.The
--applygap is worth documenting or fixing, but the scaffold itself is solid and the safe-by-default design is correct. Good to merge as a scaffold.Merged via git into main
Pull request closed