You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
CodeKeeper is a lightweight, single-file version control system for small teams. It provides both a command-line interface and a web dashboard for managing file versions, resolving conflicts, branching, and tracking changes — all without Git's complexity.
Built for developers who want simple version control without the overhead. C++17, one source file, zero framework dependencies.
Features
Web Interface
Modern dashboard — dark-themed single-page app with tabs for Overview, Staging, Commit, History, and Branches
REST API — all operations available via JSON endpoints (auth, add, commit, rollback, branches, conflicts)
Zero JS frameworks — plain HTML/CSS/JS served by a lightweight C++ HTTP server
Real-time feedback — toast notifications for all actions, live server log
Security
No command injection — hooks use fork()+execlp() instead of system()
Salted passwords — SHA-256 with per-user salt (username), not plain SHA-256
Path traversal protection — all file operations validated against repository root
Tamper-evident commit chain — each commit includes the parent commit hash
Dead code removed — unused Git bridge functions with system() calls eliminated
Directory & Recursive Operations
codekeeper add . — recursively stage entire directory trees
.pre-commit — runs before each commit. Exit non-zero to abort.
.post-commit — runs after each successful commit.
#!/bin/bash# Example .pre-commit hook: ensure no TODO is leftif grep -r "TODO" --include="*.cpp".;thenecho"Remove TODOs before committing!"exit 1
fiexit 0
Troubleshooting
Problem
Solution
Repository not initialized
Run codekeeper init <name> or codekeeper init <name> --local first
You must authenticate first
Run codekeeper auth login <user> <pass>
File is outside the repository
Use --local init in your project directory, or move files into the repo
Permission denied
Ensure /var/lib/CodeKeeper is writable, or use --local
web/index.html not found
Run codekeeper serve from the CodeKeeper project root, or use --web <path>
Hook fails
Check hook script is executable (chmod +x .pre-commit)
CodeKeeper is designed for educational and internal use — not a drop-in Git replacement
The entire core is a single C++ file — easy to audit, modify, and deploy
The web interface adds zero JavaScript framework dependencies — just vanilla HTML/CSS/JS
Compatible with Linux only (uses fork(), waitpid(), sys/stat.h)
About
CodeKeeper is a lightweight, single-file version control system for small teams. It provides both a command-line interface and a web dashboard for managing file versions, resolving conflicts, branching, and tracking changes — all without Git's complexity.