CanDoItAll.IPFS.Engine
0.1.18
dotnet add package CanDoItAll.IPFS.Engine --version 0.1.18
NuGet\Install-Package CanDoItAll.IPFS.Engine -Version 0.1.18
<PackageReference Include="CanDoItAll.IPFS.Engine" Version="0.1.18" />
<PackageVersion Include="CanDoItAll.IPFS.Engine" Version="0.1.18" />
<PackageReference Include="CanDoItAll.IPFS.Engine" />
paket add CanDoItAll.IPFS.Engine --version 0.1.18
#r "nuget: CanDoItAll.IPFS.Engine, 0.1.18"
#:package CanDoItAll.IPFS.Engine@0.1.18
#addin nuget:?package=CanDoItAll.IPFS.Engine&version=0.1.18
#tool nuget:?package=CanDoItAll.IPFS.Engine&version=0.1.18
CanDoItAll.IPFS
CanDoItAll.IPFS provides an embedded IPFS engine, reusable IPFS contracts, a typed
.NET client, and a Blazor node-control application for operating a local or remote node.
Ownership
This repository owns:
- the reusable
CanDoItAll.IPFS.Client,CanDoItAll.IPFS.Core, andCanDoItAll.IPFS.Enginepackages; - the maintained embedded IPFS engine and its HTTP API;
- the NodeControl application and its repository-specific Docker and release tooling.
This repository does not own:
- the IPFS protocol specification or public IPFS network;
- the
CanDoItAll.Components.*packages, which are consumed from nuget.org; - cross-repository standards and orchestration, which are maintained in
CanDoItAll.SharedInfo.
Projects And Packages
| Project or package | Purpose |
|---|---|
src/CanDoItAll.IPFS.Client |
Consumer-facing typed HTTP client for an IPFS node |
src/CanDoItAll.IPFS.Core |
Shared IPFS contracts and value types |
src/CanDoItAll.IPFS.Engine |
Embedded IPFS node and HTTP API |
src/CanDoItAll.IPFS.NodeControl.Abstractions |
UI-neutral NodeControl contracts and models |
src/CanDoItAll.IPFS.NodeControl |
Desktop-oriented Blazor node-control application |
tests/CanDoItAll.IPFS.Client.Tests |
Isolated Client/Core transport and contract tests |
tests/CanDoItAll.IPFS.Tests |
Unit, integration, contract, and UI-facing tests |
Install the public packages directly from nuget.org:
dotnet add package CanDoItAll.IPFS.Client
dotnet add package CanDoItAll.IPFS.Core
dotnet add package CanDoItAll.IPFS.Engine
Requirements
- .NET SDK
10.0.302, with compatible patch roll-forward as pinned byglobal.json. - Access to nuget.org for package restore.
- Docker Desktop or a compatible Docker Engine for container validation and local container workflows.
Build And Test
Run from the repository root:
dotnet restore .\CanDoItAll.IPFS.slnx --configfile .\NuGet.config
dotnet build .\CanDoItAll.IPFS.slnx --configuration Release --no-restore
dotnet test .\CanDoItAll.IPFS.slnx --configuration Release --no-build
Run NodeControl
Set a development passphrase and node repository path in the shell that starts the app:
$env:IPFS_PASS = "Choose-A-Strong-Local-Passphrase"
$env:IPFS_PATH = "C:\ipfs-data\local-node"
dotnet run --project .\src\CanDoItAll.IPFS.NodeControl\CanDoItAll.IPFS.NodeControl.csproj --framework net10.0
The control app can connect to a configured remote endpoint or start the local engine
when the configured target resolves to this machine and no node is listening.
On Windows, use --framework net10.0-windows to run the desktop/tray variant.
Important configuration:
IPFS_PASSunlocks the local engine repository.IPFS_PATHselects the local node repository path.IPFS_NODE_API_URLoverrides the engine API bind URL.src/CanDoItAll.IPFS.NodeControl/appsettings.jsoncontains NodeControl defaults.
Containers
The canonical Compose model is a loopback-only local development stack:
Copy-Item .env.example .env
# Replace the placeholder IPFS_PASS in the ignored .env file.
docker compose --env-file .env config --quiet
docker compose --env-file .env up -d --build --wait --wait-timeout 120
docker compose --env-file .env down
Default endpoints:
- NodeControl UI:
http://127.0.0.1:5093 - IPFS node API:
http://127.0.0.1:5001 - IPFS gateway:
http://127.0.0.1:5001/ipfs/{cid}
Normal teardown preserves named volumes. Destructive volume reset is intentionally not part of the normal workflow. See container operations and backup and restore.
After the .NET unit tests and container smoke validation pass, pushes to main publish
commit-tagged Linux images to GitHub Container Registry:
ghcr.io/fyziktom/candoitall-ipfs-node:sha-<commit>ghcr.io/fyziktom/candoitall-ipfs-node-control:sha-<commit>
Tags named v<version> additionally publish the immutable semantic version tag.
Documentation
Packaging And Releases
Preview or produce all public NuGet packages through the repository-owned entry point:
.\tools\deployment\nugets\Build-NuGets.ps1 -WhatIf
.\tools\deployment\nugets\Build-NuGets.ps1 `
-Configuration Release `
-Version 0.1.15 `
-OutputDirectory .\artifacts\packages
The command restores, builds, tests, and packs without publishing. Publishing to a package source is a separate, explicitly authorized operation.
Build standalone NodeControl/engine release bundles with:
.\tools\deployment\Build-Release.ps1 -WhatIf
.\tools\deployment\Build-Release.ps1
Acknowledgements
CanDoItAll.IPFS is developed and maintained by
fyziktom. It builds on Richard Schneider's original
net-ipfs-engine,
net-ipfs-core, and
net-ipfs-http-client
projects. Many thanks to Richard Schneider and the upstream contributors for making that
foundation available.
Since that foundation, this repository has been substantially extended and modernized across the protocol libraries, embedded engine, typed HTTP client, NodeControl UI, security, tests, packaging, and container deployment. Development continues here as the independently maintained CanDoItAll IPFS implementation.
License And Contributions
This repository uses the MIT License. The current work is copyright
(c) 2026 fyziktom; Richard Schneider's original 2018 copyright notice is retained for
the upstream foundation. Additional copied-source attribution is recorded in
THIRD-PARTY-NOTICES.md.
Code contributions are limited to partners explicitly approved by the maintainer.
Unsolicited pull requests are not accepted. See CONTRIBUTING.md and
contact the fyziktom account on LinkedIn before preparing or opening a pull request.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- BouncyCastle.Cryptography (>= 2.6.2)
- CanDoItAll.IPFS.Core (>= 0.1.18)
- Common.Logging (>= 3.4.1)
- Common.Logging.Core (>= 3.4.1)
- Google.Protobuf (>= 3.35.1)
- Microsoft.AspNetCore.Mvc.NewtonsoftJson (>= 10.0.10)
- Microsoft.OpenApi (>= 3.9.0)
- Newtonsoft.Json (>= 13.0.4)
- Nito.AsyncEx (>= 5.1.2)
- Nito.AsyncEx.Coordination (>= 5.1.2)
- PeterO.Cbor (>= 4.5.5)
- protobuf-net (>= 3.2.56)
- semver (>= 3.0.0)
- SharpZipLib (>= 1.4.2)
- SimpleBase (>= 5.6.2)
- Swashbuckle.AspNetCore (>= 10.2.3)
- Tmds.LibC (>= 0.5.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.