Store IPFS content on Filecoin's decentralized storage network with verifiable persistence.
Ready for persistent, verifiable data on Filecoin Mainnet.
Register for updates and a later 2026 Q2 GA announcement at filecoin.cloud.
Filecoin Pin is a fully decentralized persistence layer for IPFS content using the global network of Filecoin storage providers with cryptographic guarantees.
When you use Filecoin Pin, your IPFS data gains:
Filecoin Pin is designed for developers building on IPFS who need trustless, economically-incentivized persistence for their content. Whether you're building dApps, CI/CD workflows, static websites, AI agents, or other applications, Filecoin Pin provides the missing persistence layer for IPFS.
Filecoin Pin offers multiple affordances to integrate Filecoin storage into your workflow:
Upload IPFS files directly to Filecoin via the command line. Perfect for developers who want to integrate Filecoin storage into scripts, workflows, or local development environments.
filecoin-pin --help to see all available commands and options.npm install -g filecoin-pin--no-update-check.Automatically publish websites or build artifacts to IPFS and Filecoin as part of your CI/CD pipeline. Ideal for static websites, documentation sites, and automated deployment workflows.
Use Filecoin Pin programmatically in your Node.js or browser applications. The library provides both a high-level API for common use cases and granular core modules for advanced customization.
import { … } from 'filecoin-pin' (recommended for most use cases)import { … } from 'filecoin-pin/core/*' (CAR files, payments, Synapse SDK, uploads, UnixFS)npm install --save filecoin-pinRun a localhost IPFS Pinning Service API server that implements the IPFS Pinning Service API specification. This allows you to use standard IPFS tooling (like ipfs pin remote) while storing data on Filecoin.
filecoin-pin server command in CLI)PRIVATE_KEY=0x... npx filecoin-pin server (or use session key auth — see Configuration)Web-based management console for monitoring and managing your Filecoin Pin deployments. This is effectively a Web UI equivalent to the CLI affordance.
See /documentation.
See Filecoin Pin in action:
Filecoin Pin bridges IPFS and Filecoin to provide verifiable persistence for content-addressed data:
This repository contains multiple affordances for user interaction and a shared library for consistent functionality:
The Synapse SDK is the main library, as it's doing the work of interfacing with the rest of Filecoin Onchain Cloud including smart contracts, Filecoin Storage Providers, and more.
Helia is leveraged for turning files and directories into IPFS compatible data, which we output in CAR format.
The affordances were discussed more above. All affordances use the same core library, ensuring consistent behavior and making it easy to add new interfaces in the future.
Filecoin Pin's CLI collects telemetry. A few things:
filecoin-pin relies on.Set the environment variable FILECOIN_PIN_TELEMETRY_DISABLED=true.
npm install -g filecoin-pin
# 0. Set up authentication (choose one):
# Private key: export PRIVATE_KEY=0x...
# (or pass --private-key <key> to each command)
# Session key: export WALLET_ADDRESS=0x... SESSION_KEY=0x...
# (or pass --wallet-address <addr> --session-key <key> to each command)
# 1. Configure payment permissions (one-time setup)
filecoin-pin payments setup --auto
# 2. Upload a file to Filecoin (defaults to Mainnet)
filecoin-pin add myfile.txt
# 3. Verify storage with cryptographic proofs
filecoin-pin data-set <dataset-id>
# To use Calibration testnet (not persistent) instead:
filecoin-pin add myfile.txt --network calibration
For detailed guides, see:
Configuration of the Filecoin Pin CLI can be performed either with arguments, or environment variables.
The Pinning Server requires the use of environment variables, as detailed below.
Filecoin Pin supports Mainnet, Calibration testnet, and local devnet networks. By default, the CLI uses Mainnet.
Using the CLI:
# Use Mainnet (default)
filecoin-pin add myfile.txt
# Explicitly specify Mainnet
filecoin-pin add myfile.txt --network mainnet
# Use Calibration testnet
filecoin-pin add myfile.txt --network calibration
# Use a local foc-devnet (reads config from devnet-info.json, details below)
filecoin-pin add myfile.txt --network devnet
Using environment variables:
# Set network via environment variable
export NETWORK=mainnet
filecoin-pin add myfile.txt
# Or override RPC URL directly
export RPC_URL=wss://wss.node.glif.io/apigw/lotus/rpc/v1
filecoin-pin add myfile.txt
Selection rules:
--network and --rpc-url (and their NETWORK / RPC_URL env equivalents) are mutually exclusive. Passing both is an error.--rpc-url (or RPC_URL) is set, Filecoin Pin probes the endpoint's eth_chainId at startup and uses the matching chain (mainnet, calibration, or a configured devnet).-h, --help: Display help information for each command-V, --version: Output the version number-v, --verbose: Verbose output--private-key: Ethereum-style (0x) private key (wallet and signer), funded with USDFC--wallet-address: Session key mode: owner wallet address--session-key: Session key mode: scoped signing key registered to the wallet--network: Filecoin network to use: mainnet, calibration, or devnet (default: mainnet). Mutually exclusive with --rpc-url.--rpc-url: Filecoin RPC endpoint. Filecoin Pin probes its eth_chainId to derive the chain. Mutually exclusive with --network.Other arguments are possible for individual commands, use --help to find out more.
# Required
PRIVATE_KEY=0x... # Ethereum private key with USDFC tokens
# Optional - Network Configuration
NETWORK=mainnet # Network to use: mainnet, calibration, or devnet (default: mainnet)
RPC_URL=wss://... # Filecoin RPC endpoint (overrides NETWORK if specified)
# Mainnet: wss://wss.node.glif.io/apigw/lotus/rpc/v1
# Calibration: wss://wss.calibration.node.glif.io/apigw/lotus/rpc/v1
# Optional for Pinning Server Daemon
PORT=3456 # Daemon server port
HOST=localhost # Daemon server host
DATABASE_PATH=./pins.db # SQLite database location
CAR_STORAGE_PATH=./cars # CAR file storage directory
LOG_LEVEL=info # Logging verbosity (info, debug, error)
When DATABASE_PATH and CAR_STORAGE_PATH are not specified, data is stored in platform-specific locations:
~/.local/share/filecoin-pin/~/Library/Application Support/filecoin-pin/%APPDATA%/filecoin-pin/When using --network devnet, Filecoin Pin reads connection details from a running foc-devnet instance:
devnet-info.json (no PRIVATE_KEY needed)Environment variables for devnet:
| Variable | Description | Default |
|---|---|---|
FOC_DEVNET_BASEDIR |
Override the foc-devnet base directory | ~/.foc-devnet |
DEVNET_INFO_PATH |
Explicit path to devnet-info.json (overrides basedir) |
<basedir>/state/latest/devnet-info.json |
DEVNET_USER_INDEX |
Which user from devnet-info.json to use |
0 |
Want to contribute to Filecoin Pin or run it locally? See
DEVELOPMENT.md for setup, scripts, debugging tips, HTTP
tracing, running against a local devnet, and working with an unpublished
synapse-sdk checkout.
Repository development uses pnpm workspaces. The published package can still
be installed with npm, pnpm, or other package managers.
Interested in contributing? Please read our Contributing Guidelines for information on commit conventions, PR workflows, etc.
See Documentation above for all guides and references.
Dual-licensed under MIT + Apache 2.0