This looks really cool! I'm curious if you've considered swapping Gemini out for a local LLM alternative to keep costs down, especially for running it 24/7.
Iam so glad you replied, but the issue is only gemini has the particular state of art model that can embed all the multi modality inputs into same vector space.Other models cannot embed pics, texts,audio in same vector space,inorder to achieve we need multi pipeline arch, so if I swap gemini with something local models latency is increased, but I can achieve full local 24/7 working
and this api is a free tier.
Has anyone run into issues with concurrent writes? Like if two users submit a form at the same time, do you get race conditions or does Sheets' API handle locking somehow? I
This is really cool, been feeling this pain with worktrees for a while.
Curious about the hot strategy: when you do umount -l /workspace + mount --bind + mount --make-rshared inside the DinD container, lazy unmount means a running file watcher can still hold open fds to the old worktree while the new bind is already live. Have you hit cases where it keeps writing to stale paths after the switch? Or does it just naturally recover once the watcher picks up the inotify events from the new mount?
I have waited 12 hours for someone to ask this! You are my hero.
So the name "hot" is a bit misleading. The containers don't actually stay alive through the switch. What happens is we do the umount -l /workspace, mount --bind, mount --make-rshared sequence first, and then we run docker compose up --force-recreate. Force-recreate skips compose down (which would tear down the network, named volumes, everything) and just swaps the container processes in place. The old containers and their file watchers are killed and new ones start up.
By the time the new container processes start, /workspace already points at the new worktree so all their file handles are fresh and correct. There's no window where a watcher could be writing to stale paths because the old processes are just gone.
I was pretty afraid of this at first too but it turns out the force-recreate sidesteps the whole problem.
reply