5 Commits

Author SHA1 Message Date
robcholz ad8fb139de feat: new version 2026-02-08 00:38:21 -05:00
robcholz 5e008c9471 fix: fixed the annoying dhcp conflict when having concurrent vm 2026-02-08 00:34:01 -05:00
robcholz 935e0cd566 fix: mise install fail will not fail the ssh 2026-02-08 00:32:29 -05:00
robcholz c53a6eff51 ci: added tests 2026-02-07 23:58:10 -05:00
robcholz 4dd9c31f74 refactor: now code and claude becomes default mounts 2026-02-07 23:50:25 -05:00
6 changed files with 57 additions and 16 deletions
+12
View File
@@ -54,3 +54,15 @@ jobs:
uses: Swatinem/rust-cache@v2
- name: cargo build
run: cargo build --locked
test:
name: Test
runs-on: macos-latest
steps:
- uses: actions/checkout@v6
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Cache Rust
uses: Swatinem/rust-cache@v2
- name: cargo test
run: cargo test --locked
Generated
+1 -1
View File
@@ -1238,7 +1238,7 @@ checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65"
[[package]]
name = "vibebox"
version = "0.2.0"
version = "0.2.1"
dependencies = [
"block2",
"clap",
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "vibebox"
version = "0.2.0"
version = "0.2.1"
edition = "2024"
authors = ["Finn Sheng"]
description = "Ultrafast CLI on Apple Silicon macOS for fast, sandboxed development and LLM agents."
+4 -1
View File
@@ -67,7 +67,10 @@ fn default_auto_shutdown_ms() -> u64 {
}
fn default_mounts() -> Vec<String> {
Vec::new()
vec![
"~/.codex:~/.codex:read-write".into(),
"~/.claude:~/.claude:read-write".into(),
]
}
fn default_disk_gb() -> u64 {
+5
View File
@@ -43,6 +43,11 @@ systemctl restart ssh
# Set this env var so claude doesn't complain about running as root.'
echo "export IS_SANDBOX=1" >> .bashrc
# Ensure cloned instances generate unique machine-id on first boot.
truncate -s 0 /etc/machine-id
rm -f /var/lib/dbus/machine-id
ln -sf /etc/machine-id /var/lib/dbus/machine-id
# Shutdown the VM when you logout
cat > .bash_logout <<EOF
systemctl poweroff
+34 -13
View File
@@ -88,16 +88,22 @@ fi
# Install Mise
MISE_BIN="${USER_HOME}/.local/bin/mise"
if [ ! -x "$MISE_BIN" ] && ! command -v mise >/dev/null 2>&1; then
curl https://mise.run | HOME="$USER_HOME" sh
fi
echo 'eval "$(~/.local/bin/mise activate bash)"' >> "${USER_HOME}/.bashrc"
mise_warn() { echo "[mise] $*" >&2; }
mise_ok() { command -v mise >/dev/null 2>&1 || [ -x "$MISE_BIN" ]; }
mise_install() {
if [ ! -x "$MISE_BIN" ] && ! command -v mise >/dev/null 2>&1; then
if ! curl https://mise.run | HOME="$USER_HOME" sh; then
mise_warn "mise install script failed (continuing)"
return 0
fi
fi
echo 'eval "$(~/.local/bin/mise activate bash)"' >> "${USER_HOME}/.bashrc"
export PATH="${USER_HOME}/.local/bin:/usr/local/bin:$PATH"
export PATH="${USER_HOME}/.local/bin:/usr/local/bin:$PATH"
mkdir -p "${USER_HOME}/.config/mise"
mkdir -p "${USER_HOME}/.config/mise"
cat > "${USER_HOME}/.config/mise/config.toml" <<MISE
cat > "${USER_HOME}/.config/mise/config.toml" <<MISE
[settings]
# Always use the venv created by uv, if available in directory
python.uv_venv_auto = true
@@ -111,12 +117,21 @@ cat > "${USER_HOME}/.config/mise/config.toml" <<MISE
"npm:@anthropic-ai/claude-code" = "latest"
MISE
touch "${USER_HOME}/.config/mise/mise.lock"
if [ -x "$MISE_BIN" ]; then
HOME="$USER_HOME" "$MISE_BIN" install
else
HOME="$USER_HOME" mise install
fi
touch "${USER_HOME}/.config/mise/mise.lock"
if [ -x "$MISE_BIN" ]; then
if ! HOME="$USER_HOME" "$MISE_BIN" install; then
mise_warn "mise install failed (continuing)"
return 0
fi
else
if ! HOME="$USER_HOME" mise install; then
mise_warn "mise install failed (continuing)"
return 0
fi
fi
}
mise_install || true
# 3) start ssh (don't swallow failures)
# If ssh is already active, don't force start/restart.
@@ -184,5 +199,11 @@ if ! listens_ok; then
exit 1
fi
ip a
ip link
curl -s https://api.ipify.org ; echo
cat /etc/machine-id
echo VIBEBOX_SSH_READY
echo "VIBEBOX_IPV4=$ip"