Skip to content
/ omi Public

Version Control that uses AmigaShell/BAT/Bash/etc scripts to store files to SQLite BLOBs without compression. Uses commands like Git.

License

Notifications You must be signed in to change notification settings

wekan/omi

Repository files navigation

Omi - Optimized Micro Index Version Control

Omi is a lightweight, cross-platform version control system that stores complete repository history in a single SQLite database file (.omi).

Difference to Fossil SCM is, that Omi stores deduplicated files to SQLite as blobs without compressing, this simplifies implementation and porting to limited CPU resources like Amiga and FreeDOS.

CLI uses commands like SQLite and CURL, so for "omi push" it would upload text and files to server, using HTTP(S) FORM, POST, upload field etc. There is username, password, 2FA and language at users.txt for login.

Server is like GitHub, so it has login to API and web UI.

Features

  • Cross-platform CLI and Web UI
    • File deduplication via SHA256 hashing
    • SQLite-based storage
  • CLI
    • Git-like commands (init, clone, add, commit, push, pull)
  • Web
    • HTML 3.2 compatible (works with IBrowse, Dillo, Elinks, w3m)
    • User account management with passwords and 2FA/TOTP
    • Brute force protection and API rate limiting
    • Web-based file management (upload, download, edit, delete)
    • Markdown rendering and SVG viewing
    • Audio/video player support

Logo

Omi logo

Web UI: HTML 3.2 compatible

Omi PHP Server screenshot

Server Platforms Supported

  • PHP
  • JavaScript: Node.js/Bun/Deno
  • FreePascal

URLs

  • Repo default URLs: PHP http://localhost:8000, Node.js http://localhost:8080/, FreePascal http://localhost:3001
  • Sign In: /sign-in
  • Create Account: /sign-up
  • Browse Repo: /reponame
  • Manage Users: /people (login required)
  • Settings: /settings (login required)

CLI: Bash, FreeDOS .bat, AmigaShell, etc

cd omi/cli
./omi.sh init              # Initialize repository
./omi.sh add --all         # Stage files
./omi.sh commit -m "msg"   # Create commit
./omi.sh push              # Upload to server
./omi.sh pull              # Download from server
./omi.sh list              # Show available repos

CLI Platforms Supported

Documentation

Full documentation is in the docs/ directory:

Start with docs/README.md for navigation and quick reference.

Key guides:

Setup

Choose your server implementation:

  • FreePascal (recommended for retro systems): Single compiled binary, minimal dependencies
    See docs/SERVER_FREEPASCAL.md for setup

  • JavaScript (Node.js, Bun, or Deno): Multi-runtime support
    See docs/SERVER_JS.md for setup

  • PHP (Apache, Nginx, or Caddy): Traditional web server deployment
    See docs/SERVER_PHP.md for setup

Configure settings.txt and users.txt as needed.

Webserver configs are at docs/webserver/

Build Scripts

Use the build menu scripts in the cli/ directory to compile/transpile Omi to multiple targets. Each script writes outputs to cli/build/<target>/.

Examples:

cd cli
./build.sh
python3 build.py
lua build.lua

Related Projects

  • Fossil SCM - Original DVCS with SQLite
  • WeDOS - Kanban board (FreeDOS + Bash)

About

Version Control that uses AmigaShell/BAT/Bash/etc scripts to store files to SQLite BLOBs without compression. Uses commands like Git.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published