Improve SSH config file safety in dockerimg/ssh_theater.go

- Add SafeWriteFile method to the FileSystem interface that:
  - Writes data to a temporary file first
  - Syncs to disk to ensure data is written
  - Creates a backup of the original file (if it exists)
  - Safely renames the temporary file to the target

- Update all file modification operations to use SafeWriteFile:
  - addContainerToSSHConfig
  - removeContainerFromSSHConfig
  - addContainerToKnownHosts
  - removeContainerFromKnownHosts
  - CheckForIncludeWithFS

This change reduces the risk of corruption if the process is interrupted
while modifying configuration files.

Co-Authored-By: sketch <hello@sketch.dev>
2 files changed
tree: ac9a63b6648a2555382769bcd9ce157170291224
  1. .github/
  2. .vscode/
  3. ant/
  4. bin/
  5. claudetool/
  6. cmd/
  7. dockerimg/
  8. httprr/
  9. loop/
  10. skabandclient/
  11. skribe/
  12. termui/
  13. webui/
  14. .gitignore
  15. CONTRIBUTING.md
  16. go.mod
  17. go.sum
  18. LICENSE
  19. README.md
README.md

Sketch

Sketch is an agentic coding tool focused on the Go programming language. Sketch runs in your terminal, has a web UI, understands your code, and helps you get work done. To keep your environment pristine, sketch starts a docker container and outputs its work onto a branch in your host git repository.

To get started:

go install sketch.dev/cmd/sketch@latest
sketch

Requirements

Currently sketch runs on macOS and linux. It uses docker/colima for containers.

macOS: brew install colima linux: apt install docker.io (or equivalent for your distro)

The sketch.dev service is used to provide access to an LLM service and give you a way to access the web UI from anywhere.

Feedback/discussion

We have a discord server to discuss sketch.

Join if you want! https://discord.gg/YNUSuVm4

Development

See CONTRIBUTING.md

Open Source

Sketch is open source. It is right here in this repository! Have a look around and mod away.

If you want to run sketch entirely without the sketch.dev service, you can set the flag -skaband-addr="" and then provide an ANTHROPIC_API_KEY environment variable. (More LLM services coming soon!)