Skip to content

Quick Start

Welcome to Pogo! This guide will walk you through the basics of using Pogo for version control.

The recommended way to install Pogo is with Homebrew. Prebuilt binaries are available for macOS and Linux (both x64 and arm64).

Terminal window
brew install --cask pogo-vcs/tap/pogo

For other installation methods, see the Installation Guide.

The easiest way to get your own Pogo server is by using Docker. A prebuilt image is available at ghcr.io/pogo-vcs/pogo:alpine which runs on x64 and arm64 architectures with Linux kernals.

The port can be confugured using the PORT environment variable. The default is 8080. Make sure you add a reverse proxy with SSL certificates in front of the Pogo server if you intend to make it publicly accessible.

Navigate to your project directory and initialize a new Pogo repository:

Terminal window
cd my-project
pogo init --name my-project --server your-server.com:8080

This creates a .pogo.yaml file that tracks your repository configuration.

When prompted, enter your personal access token. This will be securely stored in your system keyring. To see your token, run:

Terminal window
pogo whoami

You can remove your token by running:

Terminal window
pogo token remove --server your-server.com:8080

A new repository starts with a single change with the description “init”. You can create a new change by running:

Terminal window
pogo new

Before writing any code, describe what you’re planning to do:

Terminal window
pogo describe

This will open a description form to write a conventional commit message. This helps you think through your changes and provides context for others. You can also use the --message flag to provide a commit message directly:

Terminal window
pogo describe --message "feat: add initial project structure"

Now work on your files as you normally would:

Terminal window
echo "# My Project" > README.md
mkdir src
echo "console.log('Hello, Pogo!');" > src/index.js

Send your changes to the server:

Terminal window
pogo push

You can push as often as you like - each push overwrites the current change until you create a new one.

You cannot overwrite a change that has children or is pointed to by a bookmark.

Mark important versions with bookmarks:

Terminal window
pogo bookmark set main

This sets the current change as the “main” bookmark. “main” is a special bookmark that represents the current development state. It is treated similar to the default branch in Git.

Pogo’s workflow is designed to be simple and iterative:

  1. Describe First: Document your intentions before starting work
  2. Work and Push: Make changes and push frequently without worrying about “commits”
  3. Iterate: Update your description as your implementation evolves
  4. Finalize: Create a new change when you’re ready to move on
  5. Bookmark: Mark important milestones for easy reference

Check your repository’s history with:

Terminal window
pogo log

This shows the relationship between changes, including parent-child relationships and bookmarks.

By default, log shows the last 10 changes. You can use the -n flag to specify a different number of changes to show.

  • Check the CLI reference for detailed command documentation
  • Report issues on GitHub
  • Join the community discussions on GitHub