The Archivist project aims to create a decentralized durability engine that allows persisting data in p2p networks. In other words, it allows storing files and data with predictable durability guarantees for later retrieval.
WARNING: This project is under active development and is considered pre-alpha.
The following should be installed before building the node:
Building in windows requires the following additional setup:
- install Mingw64, e.g. in
C:\mingw64- download the
release-posix-seh-uctvariant from the release page, and unzip to e.g.C:\mingw64 - create a symbolic link from
mingw32-make.exetomake.exe, e.g:cd C:\mingw64\binln -s mingw32-make.exe make.exe
- download the
- install Msys2, e.g. in
C:\msys64 - setup Nim to use mingw for building
- When following the Nim installation instructions, ensure that
finish.exedoes not download mingw. It should use the mingw that you just installed yourself instead.
- When following the Nim installation instructions, ensure that
- setup Rust to use mingw for building
rustup install stable-x86_64-pc-windows-gnurustup default stable-x86_64-pc-windows-gnu
- setup PATH
- ensure that your mingw folder occurs before the msys2 folder, e.g:
C:\mingw64\bin;C:\msys64\usr\bin - if you have WSL installed, ensure that the WSL binaries occur after the
mingw and msys2 folders, e.g:
C:\mingw64\bin;C:\msys64\usr\bin;%USERPROFILE%\AppData\Local\Microsoft\WindowsApps - if you have WSL installed and your C:\Windows\System32 contains bash.exe you're on an old version of WSL and the Archivist build will not work until it is uninstalled
- ensure that your mingw folder occurs before the msys2 folder, e.g:
Note: the commands in the rest of this document should be executed in powershell or cmd, not in an msys shell.
To build the project, clone it and run:
nimble buildThe executable will be placed under the build directory under the project root.
Run the node with:
build/archivistIt is possible to configure an Archivist node in several ways:
- CLI options
- Environment variables
- Configuration file
The order of priority is the same as above: CLI options --> Environment variables --> Configuration file.
The node exposes a REST API that can be used to interact with it. Overview of the API.
Feel free to dive in, contributions are welcomed! Open an issue or submit PRs.
We use nph for formatting our code and it
is required to adhere to its styling. In order to format files run nimble format. If you are using VSCode and the
NimLang
extension you can enable "Format On Save" (eq. the nim.formatOnSave property)
that will format the files using nph.