a13n
Build AI agents and run them on cloud.
Docker falls in love with Neovim.
Translation pending
Developer toolsRust · DockerfileGitHub @statiolakeOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Note: this tool is under active development. All documentations, including this README and the book, are written by AI and may not be accurate for now. Please refer to the source code for the actual behavior of the tool.
A modern CLI tool for managing Dev Containers with ease. Dockim simplifies your development workflow by providing intuitive commands for container management and Neovim integration.
~/.sshimnpm install -g @devcontainers/cliFor sshim (SSH hosts): the OpenSSH client (ssh) and curl on your machine. Nothing is needed on the host but a POSIX shell, tar and gzip.
Both binaries, dockim and sshim, are installed together.
# From source (requires Rust)
cargo install --git https://github.com/statiolake/dockim
# Or build locally
git clone https://github.com/statiolake/dockim
cd dockim
cargo install --path .
# Create dev container configuration
dockim init
This creates:
.devcontainer/devcontainer.json.devcontainer/compose.yml.devcontainer/Dockerfile# Build and start the container
dockim build
# Start the container (if already built)
dockim up
# Launch Neovim with auto-port selection
dockim neovim
# Alias: dockim v
# Launch with specific port
dockim neovim --host-port 8080
# Launch directly in container (no remote UI)
dockim neovim --no-remote-ui
dockim initCreates a new dev container configuration in the current directory.
dockim init
Generates:
.devcontainer/devcontainer.json - Dev container configuration.devcontainer/compose.yml - Docker Compose configuration.devcontainer/Dockerfile - Custom Docker image definitiondockim init-configCreates a default configuration file for dockim.
dockim init-config
Creates ~/.config/dockim/config.toml with default settings that you can customize.
dockim buildBuilds the dev container with all dependencies.
# Standard build
dockim build
# Rebuild from scratch
dockim build --rebuild
# Build without Docker cache
dockim build --no-cache
# Build Neovim from source instead of using prebuilt binaries
dockim build --neovim-from-source
dockim upStarts the dev container (builds if necessary).
dockim up
# Force rebuild and start
dockim up --rebuild
dockim stop / dockim downStops or removes the dev container.
# Stop container (keeps it for later restart)
dockim stop
# Remove container completely
dockim down
dockim neovim (alias: dockim v)Launches Neovim with remote UI support.
# Launch with automatic port selection
dockim v
# Launch with specific host port
dockim v --host-port 8080
# Launch directly in container (no remote UI)
dockim v --no-remote-ui
The remote UI mode starts a Neovim server inside the container and connects to it from your host system using the configured client.
dockim shell / dockim bashOpens an interactive shell in the container.
# Default shell (zsh)
dockim shell
dockim sh # alias
# Bash specifically
dockim bash
dockim execExecutes a command in the container.
# Run a single command
dockim exec ls -la
# Run with arguments
dockim exec git status
dockim port addSets up port forwarding from host to container.
# Forward host:8080 to container:8080
dockim port add 8080
# Forward host:8080 to container:3000
dockim port add 8080:3000
dockim port lsLists active port forwards.
dockim port ls
dockim port rmRemoves port forwarding.
# Remove specific port forward
dockim port rm 8080
# Remove all port forwards
dockim port rm --all
sshim takes dockim's commands, with the same names and flags, to a server reached with ssh:
sshim -H build-box up # connect (one shared ControlMaster) and terraform, idempotently
sshim -H build-box v # Neovim on the host (remote UI over a forwarded port by default)
sshim -H build-box sh # shell / bash / exec on the host
sshim -H build-box port add 8080
sshim -H build-box clean # remove everything sshim put on the host
-H (or SSHIM_HOST) is passed to ssh as written, so ~/.ssh/config aliases apply.
Terraforming sends only what is missing or changed, over the SSH connection (the host needs no
internet): the pinned Neovim from neovim-binaries
(v0.12.6, glibc ≥ 2.14 on x86_64 / 2.17 on aarch64), a static musl tmux, and copies of your local
configuration (by default $XDG_CONFIG_HOME/nvim and $XDG_CONFIG_HOME/tmux; [sshim] sync chooses).
Everything lives under ~/.sshim (bin/ wrappers that set XDG_*, pkg/, xdg/{config,data,state,cache}),
never in the server's own ~/.config. On musl, old glibc or another architecture the host's own
nvim is used, with a message.
| dockim | sshim |
|---|---|
up, build | terraform the host (--rebuild: resend all; --no-cache/--build-no-cache: re-download; --neovim-from-source: refused) |
stop, down | close the shared connection (files stay; clean removes them) |
neovim/v, shell/sh, bash, exec | on the host |
port add/rm/ls | forwards on the shared connection |
ps, ls | host status; aliases from ~/.ssh/config |
init, init-docker | refused (container only) |
| — | clean |
See docs/en/src/sshim.md (日本語) for the layout, the dotfiles placement (container: clone + install as before; server: isolated copies) and every option.
Configuration is stored in ~/.config/dockim/config.toml. Create a default one with:
dockim init-config
shellDefault shell to use in containers.
shell = "/usr/bin/bash"
neovim_versionNeovim version to install when using --neovim-from-source.
neovim_version = "v0.11.0"
dotfiles_repository_nameName of your dotfiles repository for automatic setup.
dotfiles_repository_name = "dotfiles"
dotfiles_install_commandCommand to run after cloning your dotfiles.
dotfiles_install_command = "echo 'no dotfiles install command configured'"
Control how Neovim remote UI works:
[neovim]
# Use direct Neovim inside the container by default
remote_ui = false
[remote]
# Run client in background (don't block terminal)
background = false
# Enable clipboard synchronization between host and container
use_clipboard_server = true
# Command to run Neovim client
# {server} is replaced with "localhost:PORT"
args = ["nvim", "--server", "{server}", "--remote-ui"]
The {server} placeholder gets replaced with the actual server address (e.g., localhost:52341) when launching the remote client.
git checkout -b feature/amazing-featuregit commit -m 'Add amazing feature'git push origin feature/amazing-featureThis project is licensed under the MIT License - see the LICENSE file for details.