aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLeonard Kugis <leonard@kug.is>2026-01-31 15:53:38 +0100
committerLeonard Kugis <leonard@kug.is>2026-01-31 15:53:38 +0100
commitad01ee9cc6bf002ef03e201af25fb6fa184c2129 (patch)
tree43b435043aabab7994a29ae501e965b1f3db3870
downloadaichat-dev-docker-ad01ee9cc6bf002ef03e201af25fb6fa184c2129.tar.gz
Initial commit
-rw-r--r--.gitignore99
-rw-r--r--Dockerfile33
-rw-r--r--docker-compose.yml15
3 files changed, 147 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..e13ddc0
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,99 @@
+# Created by https://www.toptal.com/developers/gitignore/api/linux,windows,macos,vim
+# Edit at https://www.toptal.com/developers/gitignore?templates=linux,windows,macos,vim
+
+### Linux ###
+*~
+
+# temporary files which can be created if a process still has a handle open of a deleted file
+.fuse_hidden*
+
+# KDE directory preferences
+.directory
+
+# Linux trash folder which might appear on any partition or disk
+.Trash-*
+
+# .nfs files are created when an open file is removed but is still being accessed
+.nfs*
+
+### macOS ###
+# General
+.DS_Store
+.AppleDouble
+.LSOverride
+
+# Icon must end with two \r
+Icon
+
+
+# Thumbnails
+._*
+
+# Files that might appear in the root of a volume
+.DocumentRevisions-V100
+.fseventsd
+.Spotlight-V100
+.TemporaryItems
+.Trashes
+.VolumeIcon.icns
+.com.apple.timemachine.donotpresent
+
+# Directories potentially created on remote AFP share
+.AppleDB
+.AppleDesktop
+Network Trash Folder
+Temporary Items
+.apdisk
+
+### macOS Patch ###
+# iCloud generated files
+*.icloud
+
+### Vim ###
+# Swap
+[._]*.s[a-v][a-z]
+!*.svg # comment out if you don't need vector files
+[._]*.sw[a-p]
+[._]s[a-rt-v][a-z]
+[._]ss[a-gi-z]
+[._]sw[a-p]
+
+# Session
+Session.vim
+Sessionx.vim
+
+# Temporary
+.netrwhist
+# Auto-generated tag files
+tags
+# Persistent undo
+[._]*.un~
+
+### Windows ###
+# Windows thumbnail cache files
+Thumbs.db
+Thumbs.db:encryptable
+ehthumbs.db
+ehthumbs_vista.db
+
+# Dump file
+*.stackdump
+
+# Folder config file
+[Dd]esktop.ini
+
+# Recycle Bin used on file shares
+$RECYCLE.BIN/
+
+# Windows Installer files
+*.cab
+*.msi
+*.msix
+*.msm
+*.msp
+
+# Windows shortcuts
+*.lnk
+
+# End of https://www.toptal.com/developers/gitignore/api/linux,windows,macos,vim
+
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..ce98abe
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,33 @@
+FROM rust:1-bookworm AS builder
+RUN cargo install --locked aichat \
+ && cargo install --locked argc
+
+FROM debian:bookworm
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+RUN apt-get update && apt-get install -y --no-install-recommends \
+ bash ca-certificates curl git jq \
+ ripgrep fd-find \
+ unzip zip xz-utils \
+ less nano vim-tiny tmux \
+ openssh-client \
+ python3 python3-pip \
+ nodejs npm \
+ build-essential pkg-config \
+ && rm -rf /var/lib/apt/lists/*
+
+COPY --from=builder /usr/local/cargo/bin/aichat /usr/local/bin/aichat
+COPY --from=builder /usr/local/cargo/bin/argc /usr/local/bin/argc
+
+RUN useradd -m -s /bin/bash dev \
+ && mkdir -p /work /projects \
+ && chown -R dev:dev /work /projects
+
+USER dev
+
+ENV AICHAT_FUNCTIONS_DIR=/opt/llm-functions
+
+WORKDIR /work
+CMD ["bash"]
+
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000..77e44d5
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,15 @@
+services:
+ aichat:
+ build:
+ context: .
+ image: aichat-dev:latest
+ stdin_open: true
+ tty: true
+ environment:
+ AICHAT_FUNCTIONS_DIR: /opt/llm-functions
+ HOME: /home/dev
+ volumes:
+ - ./config:/home/dev/.config/aichat:rw
+ - ./projects:/projects:rw
+ - ./llm-functions:/opt/llm-functions:ro
+ working_dir: /work