Skip to content

Repository files navigation

Cagnard outlined orange mark connecting filesystem and object storage

Cagnard

Validate Latest release

Built in Occitania for files that live everywhere.

Cagnard is a self-hosted storage browser that gives Unix filesystems and S3-compatible object storage one modern, capability-aware interface. Browse, open, search, upload, download, rename, delete, and stream files between providers without exposing storage credentials to the browser.

Try the live demo — the complete application in your browser, no install: the Go backend runs as WebAssembly inside a service worker and serves a read-only corpus straight from GitHub Pages. Sign in with alice / cagnard.

Why Cagnard

  • One browser across providers. Storage roots share a normalized contract while keeping provider-specific metadata and degraded-operation notices visible.
  • Cross-provider transfers. A tab-synchronized pasteboard, recursive tasks, conflict resolution, streaming, progress, cancellation, and per-file detail make copy and move practical.
  • Useful file opening. Text, Markdown, JSON, YAML, Parquet, Avro, Arrow, NDJSON, CSV, diffs, logs, media, PDF, and archives open in the application with bounded or range-based reads.
  • Stateless operation. One HOCON file defines users, access rules, providers, accounts, roots, and appearance; no application database is required.
  • Personal and shared spaces. Users can receive one or more personal homes alongside administrator-controlled global roots.
  • Operator-controlled appearance. Classic and Solar palettes each include light, dark, and live system modes, with optional user overrides.

Cagnard Solar light theme browsing JSON and Markdown files in an S3 storage root

Quick Start

Browser Demo

No installation: open k3rnl.github.io/cagnard and sign in with alice / cagnard. The demo is read-only and publishes automatically from each release tag.

Docker Compose

Run the released filesystem demo; Go and Node.js are not required:

git clone https://github.com/k3rnL/cagnard.git
cd cagnard/examples/run/local-filesystem-static
cp .env.example .env
docker compose up -d

Open http://127.0.0.1:5173 and sign in with alice / cagnard. The Docker guide also covers the MinIO and combined-provider examples, version selection, source builds, and cleanup.

The default path pulls from GHCR. If registry policy returns 401, the package owner must make the release packages public or grant your account read access; the Docker guide includes an immediate source-build fallback.

Helm

curl -fsSLo cagnard-demo-values.yaml \
  https://raw.githubusercontent.com/k3rnL/cagnard/v0.6.2/deploy/helm/cagnard/examples/local-filesystem-static-values.yaml

helm install cagnard oci://ghcr.io/k3rnl/charts/cagnard \
  --version 0.11.4 \
  -f cagnard-demo-values.yaml

kubectl port-forward service/cagnard-frontend 5173:80

The Helm guide explains production adaptation, secret-backed configuration, ingress, upgrades, and cleanup.

Supported Today

Area Implemented
Storage providers Unix filesystem, AWS S3 and compatible endpoints including MinIO
Authentication Static configured users and explicit local development mode
Storage access Multiple accounts, personal/global roots, user/role/group rules, read-only accounts
Browser Provider pagination, backend search/sort, metadata, multi-select, upload/download, rename/delete
Transfers Cross-provider files and directories, streams, conflict policies, task queue, progress and cancellation
File experiences Text/source editing, Markdown, JSON/YAML, read-only Parquet/Avro/Arrow/NDJSON/CSV/TSV inspection, logs, diffs, media, PDF, archives
Deployment Release images, Docker Compose examples, OCI Helm chart, GitHub release automation

OIDC declarations reserve the future SSO contract, but end-to-end OIDC login is not yet production-ready. Active background tasks are currently process-local and are lost when the backend restarts. These limits are documented rather than hidden.

Configuration And Extension

Providers, accounts, roots, users, access rules, and themes live in HOCON. Start from config/cagnard.example.conf, then use the configuration guide and field reference.

Storage implementations advertise supported, degraded, and unsupported capabilities. Maintained file openers ship in a typed first-party frontend registry and use scoped Cagnard content APIs without provider credentials. Read the architecture overview, storage provider contract, and file opener architecture before extending them.

Documentation

Engineering behavior contracts and active changes live under openspec/. Reader documentation is maintained by user goal under docs/.

Develop

Cagnard uses a Go backend and a Vite/React frontend. With Go, Node.js 22.13+, and pnpm 11.7.0 installed:

pnpm install
pnpm check

See Development setup, Testing and validation, and Documentation maintenance.

About

Provider-neutral storage browser

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages