🐱
Copied!
v0.2.2 Released

Simple, Efficient & Open Source HTTP File Transfer Service

HttpCat is a simple, efficient, and stable solution for file uploading and downloading. No external dependencies, easy deployment.

Open Source
GitHub
Simple
Zero Deps
MCP
AI Ready
Docker
Deploy

Core Features

Everything you need for efficient file transfers

MCP Support

AI assistants (Claude, Cursor, CodeBuddy) can directly manage your files

Modern UI

Beautiful React-based management interface for a better user experience

Docker Ready

One-click Docker deployment with docker-compose support

Open API

AK/SK HMAC-SHA256 signature authentication for scripts, CI/CD and AI integration

Image Management

Upload, rename, delete images with auto thumbnail generation and gallery view

Statistics

Detailed upload/download history and usage statistics tracking

Secure

UploadToken verification for secure file transfers

Notifications

WeCom Webhook integration for upload notifications

Related Projects

Explore the HttpCat ecosystem

HttpCat

Main

Core HTTP file transfer service with MCP support and modern React UI

Go 66.6% React 26.7% Shell 6.7%
View Project Download

HttpCat Python SDK

SDK

Python client SDK for easy server API communication

Python 100% MIT License
View SDK

Quick Start

Get started in minutes

# Quick Installation
httpcat_version="v0.2.2"
tar -zxvf httpcat_${httpcat_version}_linux-amd64.tar.gz
cd httpcat_${httpcat_version}_linux-amd64
sudo ./install.sh

# Manage service
systemctl start httpcat    # Start
systemctl stop httpcat     # Stop
systemctl status httpcat   # Status
# Docker Compose (Recommended)
docker-compose up -d

# Or Docker Run
docker run -d --name httpcat \
  -p 8888:8888 \
  -v $(pwd)/data:/app/data \
  -v $(pwd)/upload:/app/upload \
  httpcat:latest
# Upload file
curl -v -F "f1=@/path/to/file" \
  -H "UploadToken: YOUR_TOKEN" \
  http://localhost:8888/api/v1/file/upload

# Download file
wget -O xxx.jpg http://127.0.0.1:8888/api/v1/file/download?filename=xxx.jpg
# 1. Enable Open API in svr.yml
server:
  http:
    auth:
      open_api_enable: true
      aksk:
        your_access_key: your_secret_key

# 2. Shell script for AK/SK signature
AK="your_access_key"
SK="your_secret_key"
TIMESTAMP=$(date +%s)
BODY_HASH=$(printf '' | openssl dgst -sha256 -hex | awk '{print $NF}')

# Build signature string: Method\nPath\nQuery\nAccessKey\nTimeStamp\nBodySHA256
SIGN_STR=$(printf "%s\n%s\n%s\n%s\n%s\n%s" \
  "GET" "/api/v1/file/listFiles" "dir=/" \
  "${AK}" "${TIMESTAMP}" "${BODY_HASH}")

# Calculate HMAC-SHA256 signature
SIGNATURE=$(printf '%s' "${SIGN_STR}" | \
  openssl dgst -sha256 -hmac "${SK}" -hex | awk '{print $NF}')

# 3. Make API request with AK/SK headers
curl -s "http://localhost:8888/api/v1/file/listFiles?dir=/" \
  -H "AccessKey: ${AK}" \
  -H "Signature: ${SIGNATURE}" \
  -H "TimeStamp: ${TIMESTAMP}"
# Install SDK
pip install httpcat-sdk

# Python upload example
from httpcat.services.storage.uploader import upload_file

file_path = '/path/to/file.txt'
upload_token = 'your_token'
upload_url = 'http://your-server:8888/api/v1/file/upload'

response = upload_file(file_path, upload_token, upload_url)
print(response.text)
# MCP Client Configuration (Claude Desktop, Cursor, CodeBuddy)
{
  "mcpServers": {
    "httpcat": {
      "type": "sse",
      "url": "http://your-server:8888/mcp/sse"
    }
  }
}

# Available MCP Tools:
# - list_files, get_file_info, upload_file
# - upload_image, get_disk_usage, get_upload_history
# - request_delete_file, confirm_delete_file