Transfa

Transfa

Upload any file from the local filesystem and get a shareable, expiring link — with tools to check file status, list recent uploads, and delete files on demand.

Category
Visit Server

README

<p align="center"> <a href="https://transfa.sh"><img src="https://transfa.sh/brand/logo-wordmark.png" height="52" alt="transfa" /></a> </p>

<p align="center"> <strong>Dead-simple file sharing for developers and AI agents.</strong><br/> Upload with one command. Share with a link. No account required. </p>

<p align="center"> <a href="https://www.npmjs.com/package/transfa"><img src="https://img.shields.io/npm/v/transfa?color=0ea5e9&label=npm" alt="npm version" /></a> <a href="https://www.npmjs.com/package/transfa"><img src="https://img.shields.io/npm/dm/transfa?color=8b5cf6&label=downloads" alt="npm downloads" /></a> <img src="https://img.shields.io/badge/node-%3E%3D18-brightgreen" alt="node version" /> <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License" /></a> <a href="https://transfa.sh"><img src="https://img.shields.io/badge/hosted-transfa.sh-ff6b6b" alt="Hosted service" /></a> </p>


$ tf upload model.gguf
✓ Uploaded  model.gguf  (4.2 GB)  →  https://transfa.sh/f/xK9mRp
  SHA-256    a3f8c2...d91b
  Expires    in 7 days

Why transfa?

Most file-sharing tools are built for humans clicking through UIs. transfa is built for the terminal — designed to be called from shell scripts, CI pipelines, and AI agents (Claude, GPT, Cursor, etc.) that need to move files without friction.

  • No signup required — just install and upload
  • Any format, any size — up to 100 GB; ML models, archives, binaries, code, media
  • Built for agents — JSON API, SHA-256 checksums, idempotent uploads
  • Password protection, download limits, TTL — full control over every link
  • 100+ formats detected — MIME type auto-detection including .gguf, .safetensors, .parquet, .ipynb, and more

Install

Node.js / CLI

npm install -g transfa

Python SDK

pip install transfa

MCP server (Claude, Cursor, any MCP-compatible agent)

npx -y transfa-mcp

Or use the raw install script:

curl -fsSL https://transfa.sh/install | sh

Quick start

# Upload a file (no account needed)
tf upload photo.jpg

# Upload with custom TTL and password
tf upload secret.zip --ttl 24h --password hunter2

# Upload and pipe the URL to clipboard
tf upload bundle.tar.gz | grep url | awk '{print $2}' | pbcopy

# Download a file
tf download https://transfa.sh/f/xK9mRp

# List your uploads
tf list

# Delete an upload
tf delete xK9mRp

GitHub Actions

Upload build artifacts, coverage reports, and any CI output straight from your workflow:

- uses: colapsis/transfa-action@v1
  id: upload
  with:
    file: ./dist/report.pdf
    api-key: ${{ secrets.TRANSFA_API_KEY }}

- run: echo "${{ steps.upload.outputs.agent-link }}" >> $GITHUB_STEP_SUMMARY

All five outputs are available after the step: id, agent-link, human-link, sha256, expires-at.

See colapsis/transfa-action for the full input reference and more examples (password-protected links, self-hosted instances, single-download limits).


API

transfa is fully REST. Every operation the CLI does, you can do with curl or any HTTP client.

Upload

curl -X POST https://transfa.sh/api/upload \
  -H "Authorization: Bearer $TF_KEY" \
  -F "file=@model.gguf" \
  -F "ttl=7d"
{
  "id": "xK9mRp",
  "url": "https://transfa.sh/f/xK9mRp",
  "download_url": "https://transfa.sh/api/download/xK9mRp",
  "filename": "model.gguf",
  "bytes": 4512345678,
  "sha256": "a3f8c2...d91b",
  "expires_at": "2026-05-21T12:00:00.000Z"
}

Upload options (form fields or headers):

Field Header Description
ttl X-Transfa-TTL Expiry: 1h, 24h, 7d, 30d
password Password-protect the download link
max_downloads Burn after N downloads
filename X-Transfa-Filename Override the stored filename

Download

# Direct download (no auth required)
curl -L https://transfa.sh/api/download/xK9mRp -o model.gguf

# Password-protected
curl -L "https://transfa.sh/api/download/xK9mRp?password=hunter2" -o secret.zip

File info

curl https://transfa.sh/api/download/info/xK9mRp
{
  "id": "xK9mRp",
  "filename": "model.gguf",
  "bytes": 4512345678,
  "sha256": "a3f8c2...d91b",
  "mime_type": "application/octet-stream",
  "download_count": 3,
  "has_password": false,
  "expires_at": "2026-05-21T12:00:00.000Z",
  "active": true
}

List uploads

curl https://transfa.sh/api/upload \
  -H "Authorization: Bearer $TF_KEY"

Delete

curl -X DELETE https://transfa.sh/api/upload/xK9mRp \
  -H "Authorization: Bearer $TF_KEY"

Supported formats

Over 100 file types with correct MIME detection — including types not in standard MIME databases:

Category Formats
ML models .gguf .ggml .safetensors .onnx .pt .pth .pkl .ckpt .tflite .mlmodel .lora
Data science .parquet .arrow .feather .h5 .hdf5 .npz .npy .lance .duckdb .ipynb
Code .py .rs .go .ts .kt .swift .scala .cu .sol .vy .elm .zig
Archives .zip .tar .gz .bz2 .xz .7z .zst
3D / Design .glb .gltf .obj .stl .usdz .blend .fig .sketch .psd
Media .avif .webp .heic .jxl .opus .flac .webm .av1
Config .toml .hcl .tf .tfvars .nix .dhall .lock .env
Everything else .wasm .sqlite .db .pem .crt .p12 + all standard types

Any other format is accepted as application/octet-stream — nothing is blocked.


Plans

Guest Free Pro Team
Max file size 10 MB 500 MB 50 GB 100 GB
Uploads / day 5 20 500 5,000
Max TTL 24h 48h 30 days 180 days
Storage Unlimited Unlimited
Price Free Free $12/mo $48/mo
Trial 3-day free trial 3-day free trial

→ See full pricing


MCP server (Claude, Cursor, and any MCP-compatible agent)

transfa ships an MCP server that lets Claude, Cursor, and any MCP-compatible agent upload and share files autonomously — no shell commands, no infrastructure setup.

npx -y transfa-mcp

Claude Desktop config

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "transfa": {
      "command": "npx",
      "args": ["-y", "transfa-mcp"],
      "env": {
        "TRANSFA_API_KEY": "your-api-key"
      }
    }
  }
}

The API key is optional — the server works in guest mode without one (10 MB / 24h limit).

Available MCP tools

Tool Description
upload Upload a file from the local filesystem. Returns agent_link (direct URL), human_link (share page), and sha256. Accepts run_id, step, consumer, intent for provenance.
file_info Get metadata about an upload — filename, size, SHA-256, expiry, download count, provenance fields.
list_uploads List recent uploads (requires API key).
delete_upload Delete an upload immediately.
run_artifacts Get all files uploaded under a run_id — the full provenance manifest for a pipeline run or agent session.

Example agent workflow

When Claude has transfa as an MCP tool, it can:

  1. Generate a report → call upload → get a link → paste the link in the conversation
  2. Pass a file to another agent by sharing the agent_link
  3. Clean up with delete_upload when done

Python SDK

import transfa

# Upload
result = transfa.upload("model.pt", ttl="24h", run_id="run-42", artifact=True)
print(result.url, result.sha256)

# Download (SHA-256 verified)
transfa.download(result.id, output="model.pt")

# Provenance manifest for a run
manifest = transfa.run_artifacts("run-42")

# Async
async with transfa.AsyncClient() as client:
    result = await client.upload("model.pt")

See python/README.md for the full API reference.


Use with AI agents (script/subprocess)

transfa is also designed to be called from shell scripts, CI pipelines, and agents that prefer subprocess calls:

import subprocess, json

result = subprocess.run(
    ["tf", "upload", "output.csv"],
    capture_output=True, text=True
)
data = json.loads(result.stdout)
print(data["url"])  # https://transfa.sh/f/xK9mRp

Or use the REST API directly — no SDKs, no auth flows, just HTTP.


Self-hosting

git clone https://github.com/colapsis/transfa.git
cd transfa
cp .env.example .env          # fill in your keys
npm install --prefix server
npm install --prefix cli
npm run build --prefix frontend
pm2 start ecosystem.config.cjs

Requirements: Node.js 18+, nginx (for SSL/proxy)

See nginx/transfa.conf for a production-ready nginx config.

Environment variables

Variable Description
PORT Server port (default: 3001)
BASE_URL Public URL e.g. https://transfa.sh
STRIPE_SECRET_KEY Stripe secret key for billing
STRIPE_WEBHOOK_SECRET Stripe webhook signing secret
STRIPE_PRO_PRICE_ID Stripe price ID for Pro plan
STRIPE_TEAM_PRICE_ID Stripe price ID for Team plan

Security

Found a vulnerability? Please email tansfa.sh@gmail.com or see SECURITY.md.

Do not open a public issue for security reports.


License

MIT — © 2026 transfa contributors

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured