MCPcopy
hub / github.com/root-gg/plik

github.com/root-gg/plik @1.4.2 sqlite

repository ↗ · DeepWiki ↗ · release 1.4.2 ↗
2,058 symbols 14,297 edges 253 files 748 documented · 36%
README

Mentioned in Awesome Go Build Go Report Docker Pulls GoDoc License

Want to access the documentation? https://root-gg.github.io/plik

Want to see a live demo ? https://plik.root.gg

Want to chat with us ? Telegram group : https://t.me/plik_rootgg

Want to hear about new releases only ? Telegram channel : https://t.me/plik_root_gg

Plik

Plik is a scalable & friendly temporary file upload system — like WeTransfer, self-hosted.

Features

  • 🖥️ Modern Vue 3 web interface
  • 🧑‍💻 Powerful Command line client
  • ☁️ Multiple storage backends (local, S3, OpenStack Swift, Google Cloud Storage)
  • 🗄️ Multiple metadata backends (SQLite, PostgreSQL, MySQL)
  • 🔑 Multiple authentication providers (Local, Google, GitHub, OVH, OIDC)
  • ⏱️ Configurable TTL with auto-cleanup
  • 💣 OneShot downloads (file deleted after first download)
  • ⚡ Stream mode (uploader → downloader, nothing stored)
  • 🔐 Password-protected uploads (BasicAuth)
  • 🔒 End-to-end encryption with Age (CLI ↔ Web interoperable)
  • 📦 Archive directly from CLI/Web
  • 📊 Prometheus metrics
  • 🤖 MCP server for AI assistant integration

Third-party clients

Quick Start

# Docker
docker run -p 8080:8080 rootgg/plik

# From release
wget https://github.com/root-gg/plik/releases/download/1.4.2/plik-server-1.4.2-linux-amd64.tar.gz
tar xzvf plik-server-1.4.2-linux-amd64.tar.gz
cd plik-server-1.4.2-linux-amd64/server && ./plikd

# Debian / Ubuntu
curl -fsSL https://root-gg.github.io/plik/apt/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/plik.gpg
echo "deb [signed-by=/etc/apt/keyrings/plik.gpg] https://root-gg.github.io/plik/apt stable main" | sudo tee /etc/apt/sources.list.d/plik.list
sudo apt update && sudo apt install plik-server
sudo systemctl start plikd

# From source
git clone https://github.com/root-gg/plik.git
cd plik && make
cd server && ./plikd

# Kubernetes (Helm)
helm repo add plik https://root-gg.github.io/plik
helm install plik plik/plik

Open web interface at http://127.0.0.1:8080

Command Line Client

$ plik myfile.txt
Upload successfully created at Sat, 21 Feb 2026 09:02:54 CET :
    http://127.0.0.1:8080/#/?id=vDPmPEUqc5oCt31T

myfile.txt :  2.56 KiB / 2.56 KiB [=========================================] 100.00% 719.15 KiB/s 0s

Commands :
curl -s "http://127.0.0.1:8080/file/vDPmPEUqc5oCt31T/UZzSdZ7zPgfRiTem/myfile.txt" > 'myfile.txt'

# or with just curl
$ curl --form 'file=@/path/to/myfile.txt' http://127.0.0.1:8080
https://plik.root.gg/file/eeBKaTQhg5xv0zTL/WWVhZc0PFtvoZgCu/myfile.txt

See: CLI Client Documentation for installation

How to Contribute

Contributions are welcome! See the contributing guide for development setup and build instructions.

License

MIT

Extension points exported contracts — how you extend this code

Backend (Interface)
Backend interface describe methods that the different types of crypto backend must implement to work.
client/crypto/crypto.go
Backend (Interface)
Backend interface describe methods that the different types of archive backend must implement to work.
client/archive/archive.go
Middleware (FuncType)
Middleware is a constructor to close a Context into a middleware
server/context/juliet.go
Backend (Interface)
Backend interface describes methods that data backend must implements to be compatible with Plik.
server/data/data.go
UploadCallback (FuncType)
UploadCallback to be executed once the file has been uploaded
plik/file.go
Handler (FuncType)
Handler is a constructor to close a Context into a http.Handler
server/context/juliet.go
HandlerFunc (FuncType)
HandlerFunc is a constructor to close a Context into a http.HandlerFunc
server/context/juliet.go

Core symbols most depended-on inside this repo

NewConfiguration
called by 514
server/common/config.go
GetConfig
called by 487
server/context/context.go
NewRecorder
called by 373
server/context/test.go
GetMetadataBackend
called by 205
server/context/context.go
NewFile
called by 178
server/common/upload.go
ServeHTTP
called by 140
server/context/juliet.go
Close
called by 137
server/data/testing/testing.go
Error
called by 122
plik/file.go

Shape

Function 1,539
Method 396
Struct 114
FuncType 4
Interface 3
TypeAlias 2

Languages

Go94%
TypeScript6%

Modules by API surface

client/config_test.go74 symbols
server/common/config_test.go63 symbols
server/context/upload_test.go52 symbols
server/handlers/oidc_test.go48 symbols
webapp/src/api.js37 symbols
server/context/context.go35 symbols
server/handlers/add_file_test.go31 symbols
server/server/server.go28 symbols
server/common/config.go27 symbols
webapp/src/utils.js26 symbols
client/setup_test.go26 symbols
server/handlers/admin_test.go25 symbols

Dependencies from manifests, versioned

cel.dev/exprv0.25.1 · 1×
cloud.google.com/gov0.123.0 · 1×
cloud.google.com/go/auth/oauth2adaptv0.2.8 · 1×
cloud.google.com/go/compute/metadatav0.9.0 · 1×
cloud.google.com/go/monitoringv1.24.3 · 1×
cloud.google.com/go/storagev1.61.3 · 1×
filippo.io/agev1.3.1 · 1×
filippo.io/edwards25519v1.1.1 · 1×
filippo.io/hpkev0.4.0 · 1×

Datastores touched

(mysql)Database · 1 repos
postgresDatabase · 1 repos

For agents

$ claude mcp add plik \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact