Deplo
Recipes

Deploy Any File Type

deplo.sh isn't just for websites — deploy CSVs, images, log files, markdown, and any other artifact to a shareable URL.

deplo.sh deploys any file to a URL. Not just HTML sites — CSV exports, images, log files, JSON data, PDFs, markdown documents, and anything else your workflow produces.

Supported file types

TypeExample use caseContent-Type served
HTMLReports, dashboards, landing pagestext/html
JSONMock APIs, config snapshots, data exportsapplication/json
PDFInvoices, contracts, certificatesapplication/pdf
CSVData exports, spreadsheet downloadstext/csv
ImagesScreenshots, generated charts, diagramsimage/png, image/jpeg, etc.
MarkdownDocumentation, READMEs, notestext/markdown
Plain textLogs, scripts, config filestext/plain
ZIPBundled artifacts, code packagesapplication/zip
XMLFeeds, SOAP responses, sitemapsapplication/xml

CLI examples

# Deploy a CSV data export
deplo deploy users-export.csv --project user-data --ttl 7d

# Deploy a screenshot
deplo deploy screenshot.png --project bug-screenshot --ttl 24h

# Deploy log files for debugging
deplo deploy app.log --project debug-logs --ttl 12h

# Deploy a markdown document
deplo deploy README.md --project project-docs --ttl 30d

# Deploy a ZIP archive
deplo deploy build-artifacts.zip --project release-v2 --ttl 90d

TypeScript SDK

Deploy a CSV

import { DeploClient } from '@deplo/typescript-sdk';

const client = new DeploClient({ apiKey: process.env.DEPLO_KEY! });

const csvData = `name,email,role,joined
Alice,[email protected],admin,2024-01-15
Bob,[email protected],editor,2024-03-22
Charlie,[email protected],viewer,2024-06-01`;

const { url } = await client.deploy({
  project: 'team-roster',
  files: [{ path: 'team.csv', content: csvData, encoding: 'utf8' }],
  ttl: '30d',
});
// → https://team-roster.deplo.sh/team.csv

Deploy an image (binary file)

import { readFileSync } from 'fs';

const imageBuffer = readFileSync('./chart.png');

const { url } = await client.deploy({
  project: 'weekly-chart',
  files: [{
    path: 'chart.png',
    content: imageBuffer.toString('base64'),
    encoding: 'base64',
  }],
  ttl: '7d',
});
// → https://weekly-chart.deplo.sh/chart.png

Deploy multiple file types together

const { url } = await client.deploy({
  project: 'data-export',
  files: [
    { path: 'index.html', content: summaryPage, encoding: 'utf8' },
    { path: 'data.csv', content: csvExport, encoding: 'utf8' },
    { path: 'data.json', content: JSON.stringify(jsonExport), encoding: 'utf8' },
    { path: 'chart.png', content: chartBase64, encoding: 'base64' },
  ],
  ttl: '14d',
});
// index.html can link to all the other files

With Claude Desktop (MCP)

Ask your AI to deploy non-site files:

Export this data as a CSV and deploy it so I can share the download link:

Name: Alice, Role: Admin, Department: Engineering Name: Bob, Role: Editor, Department: Marketing

Take this error log and deploy it so the on-call engineer can review it: [paste log output]

Generate a PNG chart of our monthly signups and deploy it.

Ephemeral artifacts

Use TTL to auto-clean temporary files:

# Debug logs — expire in 12 hours
deplo deploy debug.log --project debug-session-42 --ttl 12h

# CI test results — expire in 3 days
deplo deploy test-results.xml --project ci-run-1234 --ttl 3d

# Temporary data share — expire in 1 hour
deplo deploy dataset.csv --project quick-share --ttl 1h

What's next?

On this page