Version control that stays under your control
Learn how to install OVC, create encrypted repositories, use the desktop app, work from the command line, and understand the local-first architecture.
Choose your platform
The desktop app is the fastest path for local use. It includes the OVC service and interface in one application.
Install the CLI
Use the CLI for terminal workflows, automation, and browser hosting.
$ curl -fsSL https://raw.githubusercontent.com/Olib-AI/ovc/main/scripts/install.sh | bash
PS> irm https://raw.githubusercontent.com/Olib-AI/ovc/main/scripts/install.ps1 | iex
Create your first encrypted repository
Open OVC from your Applications folder, Start menu, or Linux application launcher. The app starts its private local service automatically.
- Enter the name used for new commits.
- Enter the email used for new commits.
- Choose a name for your first repository.
- Create and confirm its encryption password.
Your author identity is stored inside the encrypted repository configuration. Repository passwords are not placed in browser storage.
No CLI or daemon required
The desktop executable links the OVC API directly and embeds the compiled React interface. It binds to an available loopback port and creates a private session before the system webview loads.
- macOS: WKWebView
- Windows: WebView2
- Linux: WebKitGTK
Desktop and CLI installations can coexist. Both use the same encrypted repository format.
A familiar daily workflow
# Create and work with a repository $ ovc init --name my-project.ovc --key mykey $ ovc add . $ ovc commit -m "initial commit" $ ovc status $ ovc log --oneline --graph
Set OVC_KEY, OVC_AUTHOR_NAME, and OVC_AUTHOR_EMAIL in your shell for repeatable CLI workflows. The interactive ovc onboard command can configure these values.
Host the same interface in a browser
The CLI can serve the embedded interface for browser use, development, or remote deployments.
$ ovc serve --port 9742 --repos-dir /path/to/repos $ ovc web
The desktop app does not use this fixed port or require this command. It manages its own private service instance.
One encrypted file per repository
Every repository is stored as a portable .ovc file. Commit data, branches, tags, file names, content, and repository configuration are encrypted at rest.
- Default desktop location: the platform data directory under
ovc/repos - Custom location: set
OVC_REPOS_DIRbefore launching OVC - Encryption: XChaCha20-Poly1305 with Ed25519 and X25519 keys
- Local service: bound to
127.0.0.1on an available port
Native shell, embedded service, shared UI
Slint
Owns the native application window and startup state.
Wry and React
Attaches the system webview and loads embedded assets.
Axum API
Runs in process and operates on encrypted repositories.
The shared React interface avoids maintaining separate desktop and browser implementations. The system webview keeps the package smaller than bundling a complete browser engine.
Build from source
$ git clone https://github.com/Olib-AI/ovc.git $ cd ovc/frontend && npm install && npm run build $ cd .. && cargo run -p ovc-desktop
Create a native package
$ cargo install cargo-bundle --version 0.11.0 $ cargo bundle --release -p ovc-desktop
Detailed guides
Continue with the focused guides in the repository.