Skip to main content

A portable containerized shell

Project description

Kitt

Kitt is a container based portable shell environment.

Spawn your shell, with your tools, and your config, anywhere.

Installation

Install Docker and python3.

➜  curl -sSL https://get.docker.io | bash
➜  pip install kitt-shell

How to use Kitt

Fill a configuration file (see examples folder) either in toml or json format. Feed it to Kitt and let the magic happend !

➜  kitt build -f examples/devops.conf devops
✓ Build success !

➜  kitt run devops
user@kitt:~# 

Kitt CLI reference

➜  kitt --help

Usage: kitt.py [OPTIONS] COMMAND [ARGS]...

Options:
  -h, --help   Show this message and exit.
  -d, --debug  Debug mode

Commands:
  build    Build image from source config file
  list     List local images
  patch    Patch image runtime metadata
  prune    Prune local images
  pull     Pull image and exit
  push     Push image to registry
  refresh  Pull latest version of local images
  remove   Remove local image
  run      Run kitt shell
  version  Show version

Configuration

Basics

[options]
docker_in_docker = false    # Share docker socket
forward_x11 = false         # Configure x11 forward

[workspace]
tools = []              # Catalog tools
user = "user"           # Username inside container
hostname = "kitt"       # Container hostname
default_shell = "bash"  # One of bash, zsh, sh, dash

# [[workspace.envs]]  # Container exported ENV (multiple)
# name = ""
# value = ""

# [[workspace.volumes]]   # Container bind volumes (multiple)
# host = ""   # Local directory
# bind = ""   # Bind inside container
# mode = ""   # Mode (default is 'rw')

For more details about Catalog tool installer, see tools installation section.

Plugins

Kitt offers multiple optional plugins to improve environment customization.

Plugin Description
bash configure bash
zsh install and setup Zsh (oh-my-zsh)
copy copy local files inside container
download download ressources inside container
git clone git repository inside container
tmux configure Tmux
screen configure GNU Screen
sercrets add secrets

See PLUGINS.md for configuration details.

See plugins.py to implement your own plugin.

How does it work ?

Kitt will build an OCI Container Image (compatible with Docker, Podman, ...), according to the provided configuration file. It will install requested tools inside, setup your desired shell(s), shortcuts, completion, plugins, and add your configuration files.

At runtime, Kitt will create a container from this image, spawn a shell inside and attach it to your current TTY.

Tools installation

For the tool installation part, Kitt relies on Catalog. It does provide an uniform way of installing tools inside containers, and can be extended if necessary.

Catalog is also available inside the container :

➜  kitt run devops
root@kitt:~# catalog htop pulumi

[+] Installing htop
...

Containerization

At first, kitt was meant to run with Podman as it is rootless by design (which solves uig/gid mapping problems).
However, for multiple reasons, it should now mainly run with Docker. Podman support is in progress, see branch feat/podman.

What is UID/GID reflexion ?

TL;DR: It's great for shared folders file rigths.

Kitt uses fixuid project to reflect host user UID/GID inside the container. What does that means ?

As Docker containers run as root (except rootless ones, but still), if you have a shared volume between your host and container, files created inside the container will be owned by root on the host. This mecanism makes working with volumes for user owned files very unconvenient.

With fixuid, the user inside the container will have the exact same real uid as your current host user. So if you bind a directory (your home for example), any file created by the user inside the container will be own by your user on the host side instead of root.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kitt-shell-0.4.4.tar.gz (13.1 kB view details)

Uploaded Source

Built Distribution

kitt_shell-0.4.4-py3-none-any.whl (13.1 kB view details)

Uploaded Python 3

File details

Details for the file kitt-shell-0.4.4.tar.gz.

File metadata

  • Download URL: kitt-shell-0.4.4.tar.gz
  • Upload date:
  • Size: 13.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.5

File hashes

Hashes for kitt-shell-0.4.4.tar.gz
Algorithm Hash digest
SHA256 1d7a8c55acd335af8c635cbcd9d1dace9f7f42aa1dcb59ac4ad6ce4178717236
MD5 ed20ba9b1f2f55433a0d72239bd340cd
BLAKE2b-256 675c2037b1bdc34291078312b0c9120c003301b9d5278e9b1af31f932fdbdd1c

See more details on using hashes here.

File details

Details for the file kitt_shell-0.4.4-py3-none-any.whl.

File metadata

  • Download URL: kitt_shell-0.4.4-py3-none-any.whl
  • Upload date:
  • Size: 13.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.5

File hashes

Hashes for kitt_shell-0.4.4-py3-none-any.whl
Algorithm Hash digest
SHA256 b76d595313d1305bf1c570f3c2aa09898ee500c6e9ff0dba6d28af33b1f79fc0
MD5 1c39c8a5adbfa1412c61fed88173d006
BLAKE2b-256 b99a325734dc13a5c3d3d24667e97f089da824af14ebfa1f34451bc2170c50b3

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page