SkillAgentSearch skills...

Rustbin

A minimalist pastebin written in rust.

Install / Use

/learn @PeroSar/Rustbin
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<div align="center"> <picture> <source media="(prefers-color-scheme: dark)" srcset="assets/logo.png"> <source media="(prefers-color-scheme: light)" srcset="assets/logo-black.png"> <img src="assets/logo-black.png" alt="rustbin logo" width="96"> </picture> <h1>rustbin</h1> <p>A minimalist pastebin and URL shortener written in Rust.</p>

CI Rust License: MIT

</div>

Features

  • Syntax highlighting — 400+ languages powered by syntect with a GitHub Dark theme
  • Language detection — automatic detection via filename extension or Enry classifier (Go FFI)
  • Markdown rendering — GitHub Flavoured Markdown compatible with syntax-highlighted code blocks
  • URL shortening — paste a URL to get a short redirect link instantly
  • Social previews — generates 1200×630 PNG preview images for social media embeds
  • Paste expiration — set optional TTLs; expired pastes are cleaned up automatically
  • LRU caching — rendered HTML and preview images are cached in memory
  • Line linking — click a line number to link to it; shift-click to select a range
  • Single binary — assets, fonts, and syntax definitions are all embedded

Installation

From source

Prerequisites: Rust (edition 2024) and Go (for the Enry FFI).

git clone https://github.com/perosar/rustbin
cd rustbin
cargo build --release

The compiled binary will be at target/release/rustbin.

Usage

Running the server

cp .env.example .env
# Edit .env as needed
./target/release/rustbin

The server starts on http://0.0.0.0:3000 by default.

Creating pastes

Web UI — open the root URL in your browser and paste content into the textarea.

curl:

# Create a paste from a file
curl -F 'file=@main.rs' https://example.com

# Create a paste from stdin
echo 'fn main() {}' | curl -F 'file=@-' https://example.com

# Create a paste with an expiration
curl -F 'file=@script.py' -F 'expires_in=24h' https://example.com

# Shorten a URL
curl -F 'file=@-' https://example.com <<< 'https://example.com/very/long/url'

The response contains the paste URL, e.g. https://example.com/aBcDeFgHiJ.

Accessing pastes

| Endpoint | Description | |---|---| | GET /{id} | Rendered paste with syntax highlighting | | GET /{id}.{ext} | Rendered paste with a language hint (e.g. /{id}.go) | | GET /{id}/raw | Raw plain-text content | | GET /{id}/preview.png | 1200×630 PNG preview image |

Configuration

All configuration is done through environment variables (or a .env file).

| Variable | Default | Description | |---|---|---| | DATABASE_URL | sqlite://rustbin.db | SQLite connection string | | HOST | 0.0.0.0 | Bind address | | PORT | 3000 | Bind port | | MAX_PASTE_SIZE | 2MB | Maximum upload size (supports KB, MB, GB) | | CLASSIFIER_MAX_BYTES | 64KB | Maximum content size for Enry-based language detection when no filename extension is present | | HIGHLIGHT_MAX_BYTES | 256KB | Maximum content size for syntax-highlighted HTML rendering before falling back to plain text with line links | | RENDER_CACHE_CAPACITY | 128 | Number of rendered HTML entries to cache | | CLEANUP_INTERVAL | 3600 | Seconds between expired-paste cleanup runs | | DB_MIN_CONNECTIONS | 1 | SQLite connection pool minimum | | DB_MAX_CONNECTIONS | 5 | SQLite connection pool maximum | | RUST_LOG | rustbin=info | Log level filter (uses tracing-subscriber) |

Related Skills

View on GitHub
GitHub Stars7
CategoryData
Updated10h ago
Forks0

Languages

Rust

Security Score

90/100

Audited on Apr 3, 2026

No findings