Keep your editor, your dotfiles, your workflow.
Work with remote files and commands as if they were local.
Quick Start →
Install Graft
curl --proto '=https' --tlsv1.2 -sSf https://graft.run/install.sh | sh
See it in action
package main import ( "net/http" "runtime" ) func main() { http.HandleFunc("/", handler) http.ListenAndServe(":8080", nil) } func handler(w http.ResponseWriter, r *http.Request) { if runtime.GOOS == "darwin" { w.Write([]byte("hello from darwin")) } else { w.Write([]byte("hello from linux")) } }