Very excited about the fork's improvements given the lack of responsiveness in core repo. I've hit some of these bugs including the registry issue. Thank you for open sourcing it.
I've used a combination of ProxyCommand directive in ssh config + a script it calls w/ the `%h` (host) to unpack what the correct instance-id is (like @galanwe). For the proxycommand, you can embed an `aws ec2-instance-connect send-ssh-public-key` for pushing a key valid for 60s followed by activating the SSM session.
The downside is it adds ~20-30s delay in connection due to the API requests, but if you're making repeated rapid requests to same instance, I recommend looking into ssh's ControlPath, ControlMaster and ControlPersist to keep a longer lived session that's re-used for client re-connections (ref: https://blog.scottlowe.org/2015/12/11/using-ssh-multiplexing...)
[Edit to add that I've hit the registry bug myself]
I started off using Basecamp sub, then a rust remake called tome and finally simplified it as a golang project https://github.com/zph/tome-cli.
The elegance of this solution is having a helper binary that wraps a folder of sub folders and scripts as a cohesive sdk.
Copied from readme, the features are: - Organize a folder of scripts into a CLI sdk - Any language is supported via normal script #! - Usage text extracted from script header if USAGE: is included in leading comments - Full help text extracted as lines from USAGE: to first empty line - Builtin alias generator allows for embedding configuration flags via tome-cli alias Auto completion of: subcommands (exec, help, etc) root folder's folder names root folder's scripts root script's flags and arguments (when they satisfy the --complete and TOME_COMPLETION interface) Gitignore like syntax for ignoring scripts by using a .tomeignore file at base of root folder example
The trick to allowing any script language is to only allow self contained dependency languages like deno, python with uv inline deps or golang with bash wrapper. And then you need to vendor those runtime references in repo as well using hermit or dotslash so that the toolkit is self contained.
It saves a good bit of time to have a central cli andale it easy to extend