Content at Velocity

A blazing-fast headless CMS. Stream content of any size with built-in versioning, workflows, and multi-tenant support.

Terminal
$ velocity content create articles/hello-world
Created articles/hello-world (draft)
$ velocity content publish articles/hello-world
Published articles/hello-world
$ curl https://api.example.com/api/content/articles/hello-world
{"id":"hello-world","title":"Hello World",...}

Everything you need for content management

Built for developers who need speed, flexibility, and reliability.

REST API

Simple, intuitive REST endpoints. Use from any language or framework. Works with curl.

Content Workflows

Draft, pending, and live states. Move content through approval workflows before publishing.

Full Versioning

Every change is tracked. Roll back to any previous version with a single command.

Multi-Tenant

Isolate content by tenant. Perfect for SaaS applications and agencies managing multiple clients.

Multiple Backends

Store content in S3, Wasabi, databases, or custom backends. Your data, your infrastructure.

Powerful CLI

Manage content from the command line. Create, update, publish, and rollback with simple commands.

Up and running in minutes

Install the CLI and start managing content immediately.

1

Build and start the server

Clone the repository and build the server using Go. Configure storage with environment variables.

Terminal
$ git clone https://github.com/abrayall/velocity.git
$ cd velocity
$ go build -o velocity-server ./server

# Configure S3/Wasabi storage
$ export S3_ENDPOINT=s3.wasabisys.com
$ export S3_BUCKET=my-bucket
$ export S3_ACCESS_KEY_ID=your-key
$ export S3_SECRET_ACCESS_KEY=your-secret

$ ./velocity-server --port 8080
Velocity 0.1.0 server is ready!
2

Install the CLI

Build the CLI tool to manage content from the command line.

Terminal
$ go build -o velocity ./cli
$ ./velocity --help
Velocity CLI - Headless CMS client

Usage: velocity [command]

Commands:
  content    Manage content
  schema     Manage schemas
  version    Show version
3

Create content

Start creating and managing content with the CLI or curl.

Terminal
$ velocity content create articles my-post -d '{"title":"My Post"}'
Created articles/my-post

$ velocity content list articles
ID          TYPE       STATE   MODIFIED
my-post     articles   live    2025-01-15

Simple REST API

Use the CLI or curl to interact with your content.

Create Content

cURL
$ curl -X POST https://velocity.example.com/api/content/articles/hello \
    -H "Content-Type: application/json" \
    -H "X-Tenant: demo" \
    -d '{"title": "Hello World", "body": "Welcome!"}'

{
  "id": "hello",
  "type": "articles",
  "state": "live"
}

Get Content

cURL
$ curl https://velocity.example.com/api/content/articles/hello

{
  "title": "Hello World",
  "body": "Welcome!"
}

List Content

cURL
$ curl https://velocity.example.com/api/content/articles

{
  "items": [
    {"id": "hello", "type": "articles"},
    {"id": "welcome", "type": "articles"}
  ],
  "count": 2
}

Upload File

cURL
$ curl -X POST https://velocity.example.com/api/content/images/logo \
    -H "X-Tenant: demo" \
    -F "[email protected]"

{
  "id": "logo",
  "type": "images",
  "content-type": "image/png"
}

Ready to get started?

Deploy Velocity and start managing your content today.