Go to file
TC Johnson 4644b7a401
Hardcoded runner IDs into script paths
The runner ID CI variable resolved to the runners' numeric ID whereas
the project path uses the runners' alpha-numeric formatted ID. Both
IDs show in Gitlab's settings->cicd->runners. For the time being, I've
hardcoded the alpha-numeric ID into the script paths in the CI config.
If we have to retate runners, we will need to update these entries.
2024-04-28 18:58:28 -05:00
.cargo wasm fixes 2022-11-29 22:51:51 -05:00
dev-setup minor nit 2024-04-21 18:02:14 -04:00
doc config fixes 2024-03-27 17:53:50 -05:00
files Add Test CA and simple certs for testing 2021-11-22 09:02:41 -05:00
package add IPC directory to rpm and deb packaging 2024-04-28 17:31:04 -04:00
scripts Modified path to CICD scripts in CI config 2024-04-28 18:21:39 -05:00
veilid-cli Version update: v0.3.1 → v0.3.2 2024-04-28 17:33:07 -05:00
veilid-core Version update: v0.3.1 → v0.3.2 2024-04-28 17:33:07 -05:00
veilid-flutter Version update: v0.3.1 → v0.3.2 2024-04-28 17:33:07 -05:00
veilid-python Version update: v0.3.1 → v0.3.2 2024-04-28 17:33:07 -05:00
veilid-server Version update: v0.3.1 → v0.3.2 2024-04-28 17:33:07 -05:00
veilid-tools Version update: v0.3.1 → v0.3.2 2024-04-28 17:33:07 -05:00
veilid-wasm Version update: v0.3.1 → v0.3.2 2024-04-28 17:33:07 -05:00
.bumpversion.cfg Version update: v0.3.1 → v0.3.2 2024-04-28 17:33:07 -05:00
.earthlyignore capnp and protoc versioning 2023-09-16 16:51:57 -04:00
.gitignore fix overzealous gitignore and organize flutter a bit 2024-03-27 17:53:50 -05:00
.gitlab-ci.yml Hardcoded runner IDs into script paths 2024-04-28 18:58:28 -05:00
BOOTSTRAP-SETUP.md Added VLD0 parameter to keypair generation step. 2023-11-26 16:42:08 +00:00
CHANGELOG.md Updated changelog for v0.3.2 2024-04-28 17:26:27 -05:00
CONTRIBUTING.md Dev network setup docs 2023-09-18 21:28:56 -05:00
Cargo.lock Version update: v0.3.1 → v0.3.2 2024-04-28 17:33:07 -05:00
Cargo.toml fixes for 'nom' out of date 2024-03-27 17:53:50 -05:00
DEVELOPMENT.md upgraded the ndk version 2024-04-14 15:31:16 +10:00
Earthfile fix WASM build 2024-04-28 16:15:09 -04:00
INSTALL.md Add Homebrew instructions 2024-01-02 09:16:50 -08:00
LICENSE Add LICENSE 2023-08-10 19:34:50 +00:00
README-DE.md Cleaned up .md files syntax 2023-09-12 08:43:09 -05:00
README-JP.md Japanese translation of the README 2023-10-14 18:14:02 +00:00
README-pt_BR.md Created README in pt_BR. 2024-01-20 15:50:45 -03:00
README.md Add example code snippet to the README 2024-01-11 11:01:24 -08:00
RELEASING.md Added instructions for, and simultaneously testing, [ci skip] 2024-04-05 03:20:34 +00:00
build_docs.bat Make env var BUILD_DOCS=1 not persist 2023-10-30 23:29:57 -04:00
build_docs.sh fix doc build for docs.rs 2023-10-17 22:13:00 -04:00
code_of_conduct.md Fix a couple markdownlint issues, no change to content. 2023-09-10 16:32:38 -04:00
version_bump.sh simplify 2023-09-16 16:51:59 -04:00

README.md

Welcome to Veilid

From Orbit

The first matter to address is the question "What is Veilid?" The highest-level description is that Veilid is a peer-to-peer network for easily sharing various kinds of data.

Veilid is designed with a social dimension in mind, so that each user can have their personal content stored on the network, but also can share that content with other people of their choosing, or with the entire world if they want.

The primary purpose of the Veilid network is to provide the infrastructure for a specific kind of shared data: social media in various forms. That includes light-weight content such as Twitter's tweets or Mastodon's toots, medium-weight content like images and songs, and heavy-weight content like videos. Meta-content such as personal feeds, replies, private messages, and so forth are also intended to run atop Veilid.

Run a Node

The easiest way to help grow the Veilid network is to run your own node. Every user of Veilid is a node, but some nodes help the network more than others. These network support nodes are heavier than the node a user would establish on their phone in the form of a chat or social media application. A cloud based virtual private server (VPS), such as Digital Ocean Droplets or AWS EC2, with high bandwidth, processing resources, and up time availability is crucial for building the fast, secure, and private routing that Veilid is built to provide.

To run such a node, establish a Debian or Fedora based VPS and install the veilid-server service. To make this process simple we are hosting package manager repositories for .deb and .rpm packages. See the installing guide for more information.

Building on Veilid

If you want to start using Veilid for your own app, take a look at the Developer Book.

A basic example using veilid-core and tokio might look like this.

use std::sync::Arc;
use veilid_core::VeilidUpdate::{AppMessage, Network};
use veilid_core::{VeilidConfigBlockStore, VeilidConfigInner, VeilidConfigProtectedStore, VeilidConfigTableStore, VeilidUpdate};

#[tokio::main]
async fn main() {
    let update_callback = Arc::new(move |update: VeilidUpdate| {
        match update {
            AppMessage(msg) => {
                println!("Message: {}", String::from_utf8_lossy(msg.message().into()));
            }
            Network(msg) => {
                println!("Network: Peers {:}, bytes/sec [{} up] [{} down]", msg.peers.iter().count(), msg.bps_up, msg.bps_down)
            }
            _ => {
                println!("{:?}", update)
            }
        };
    });

    let config = VeilidConfigInner {
        program_name: "Example Veilid".into(),
        namespace: "veilid-example".into(),
        protected_store: VeilidConfigProtectedStore {
            // avoid prompting for password, don't do this in production
            always_use_insecure_storage: true,
            directory: "./.veilid/block_store".into(),
            ..Default::default()
        },
        block_store: VeilidConfigBlockStore {
            directory: "./.veilid/block_store".into(),
            ..Default::default()
        },
        table_store: VeilidConfigTableStore {
            directory: "./.veilid/table_store".into(),
            ..Default::default()
        },
        ..Default::default()
    };

    let veilid = veilid_core::api_startup_config(update_callback, config).await.unwrap();
    println!("Node ID: {}", veilid.config().unwrap().get_veilid_state().config.network.routing_table.node_id);
    veilid.attach().await.unwrap();
    // Until CTRL+C is pressed, keep running
    tokio::signal::ctrl_c().await.unwrap();
    veilid.shutdown().await;
}

Development

If you're inclined to get involved in code and non-code development, please check out the contributing guide. We're striving for this project to be developed in the open and by people for people. Specific areas in which we are looking for help include:

  • Rust
  • Flutter/Dart
  • Python
  • Gitlab DevOps and CI/CD
  • Documentation
  • Security reviews
  • Linux packaging