Table of Contents

Projects

A Project is the top-level organizational unit in ZEDEDA Cloud. Every asset you create — edge nodes, app instances, network instances, volumes, images, datastores, and policies — belongs to exactly one project. Projects define access control scope, policy inheritance, and the boundary for zero-touch deployments. When an edge node checks in, it receives configuration based on its assigned project.

Each project belongs to a single enterprise. An enterprise starts with one default empty project, and you can create as many additional projects as your segmentation requires.

Project Types

Type Profile Purpose
Deployment Regular only Current recommended type. Uses Zero-Touch Deployments (ZTD) with tag-based policy and app matching. All new projects should use this type.
Legacy Regular Original project type, still supported. Policies and apps auto-apply to all nodes without tag matching.
Legacy Azure Integrates with Azure IoT Hub. Supports Azure DPS enrollment (symmetric key or TPM), module policies, and Device CA certificate generation.

Project Status

Status Meaning
Active (purple) Project is ready to use; all required policies are configured.
Inactive (yellow) Project is not ready; a required policy is missing or misconfigured.
Initialized (dark blue) Project created but no policy has been added yet.
Archived (grey) Not currently used.
Unknown (light grey) Status cannot be determined.
Error (red) Not currently used.

The project's status rolls up from the status of its attached policies. If any policy is broken or incomplete, the project goes Inactive.

Policies

Policies are the key mechanism by which a project controls what happens on every edge node assigned to it. When a node joins a project, all active policies in that project are automatically applied to that node. When a node is removed from a project, policies delivered by that project are revoked.

Attestation Policy

Enforces remote attestation on every edge node in the project. When enabled:

This uses measured boot (not secure boot). Measured boot records component state into TPM PCR registers for remote verification. It does not block unsigned code from running, but it does make tampering detectable.

To enable: check Enforce Edge Node Attestation in the project's Policies tab.

Network Instance Policy

Automatically deploys one or more network instances to every edge node in the project. This eliminates the need to manually create the same network instance on every node.

Use cases:

How it works: select one or more pre-defined network instances from the dropdown. When a new node is added to the project, EVE-OS receives the network instance config and creates the instance automatically.

Edge App Policy

Automatically deploys a specified app instance to every edge node in the project. When a new node is added, the app is deployed without any manual step.

Key behaviors:

Use cases:

EdgeView Policy

Controls remote access via the EdgeView feature. EdgeView lets operators open a terminal session to an edge node that is behind a firewall, without requiring a VPN.

Policy settings:

Setting Description
Allow EdgeView Master on/off switch for the policy.
Max Session Duration (sec) Maximum lifetime of a single EdgeView session (e.g., 2592000 = 30 days).
Max Concurrent Instances Maximum number of simultaneous EdgeView sessions to any node in the project.
Allow Change Whether operators can modify session parameters at runtime.
Dev Access Allow terminal access to the EVE-OS host (device-level shell).
App Access Allow terminal access into individual app containers/VMs on the node.
Ext Access Allow external (non-ZEDEDA) users to join via JWT invitation.

How it works:

Note: The EdgeView policy must be enabled at the project level before any EdgeView session can be started on nodes in that project.

Device Policy (dev-policy)

A device-level policy delivered to all nodes in the project. Controls node-level behaviors including:

Flow logs are disabled by default. Enable at the project level when you need network traffic visibility for compliance, debugging, or traffic analysis.

Volume Instance Policy (vol-inst-config)

Available in Deployment type projects only. Automatically provisions a volume instance on every edge node in the project. Used to pre-stage persistent storage before apps land.

Defined as part of a project deployment (see Zero-Touch Deployments below).

Zero-Touch Deployments (ZTD)

ZTD is exclusive to Deployment type projects. It automates policy assignment and app instance deployment using a tag-matching system.

How It Works

  1. You define a deployment inside the project: a named, versioned bundle of policies and app configs
  2. Each deployment has one or more deployment tags (key:value pairs)
  3. Each edge node in the project also has tags
  4. ZEDEDA Cloud continuously matches node tags to deployment tags; matching nodes receive that deployment's config and apps automatically
  5. Changing a node's tags (or a deployment's tags) re-evaluates the match and applies or removes configs accordingly

This means you can:

Deployment Contents

Each deployment version can include:

Config Purpose
app-inst-config Which app bundles to deploy and with what overrides
net-inst-config Which network instances to create on matching nodes
vol-inst-config Which volume instances to pre-create on matching nodes
dev-policy-config Device-level policy (flow logs, metrics, debug)
edgeview-config EdgeView policy for remote access

ZCLI: Create a Deployment Project with ZTD

zcli project create MY_PROJECT \
  --description="Workshop project" \
  --project-type=deployment \
  --deployment-name=MY_DEPLOYMENT-v1 \
  --deployment-tag=env:production \
  --app-inst-config=./app_config.json \
  --net-inst-config=./net_config.json \
  --vol-inst-config=./vol_config.json \
  --dev-policy-config=./dev_policy.json \
  --edgeview-config=./edgeview_policy.json

ZCLI: Update a Deployment

zcli project update-deployment MY_PROJECT \
  --deployment-id=<deployment-id> \
  --app-inst-config=./updated_app_config.json \
  --deployment-tag=env:production

Enable Flow Logs via ZCLI

zcli project update MY_PROJECT --config=flowlogs:true

Flow log records include: source and destination IP, source and destination port, ACL rule applied, and packet and byte counters per flow.

Flow: ZEDUI to API to Edge Node

ZEDUI

  1. Navigate to Administration > Projects
  2. Click the + icon
  3. Details: enter Name, Title, Description; select Type (Deployment or Legacy) and Profile (Regular or Azure)
  4. Deployments (Deployment type only): define deployment name and tags
  5. Policies: configure Attestation, Network Instance Policy, Edge App Policy, EdgeView Policy, and Device Policy
  6. Review and click Add

The Name field is permanent and unique within the enterprise. The Title can be changed later. The Type and Profile cannot be changed after creation.

Terraform

resource "zedcloud_project" "workshop" {
  name        = "workshop-project"
  title       = "EVE-KVM Workshop Project"
  description = "Workshop project for EVE-OS and EVE-KVM workflows"
  type        = "DEPLOYMENT"

  # Attestation policy
  attestation_policy {
    enforce = true
  }

  # Edge App policy: auto-deploy a monitoring agent to all nodes
  app_policy {
    app_id = zedcloud_application.monitoring_agent.id
  }

  # EdgeView policy: allow dev and app access, 8-hour sessions
  edge_view_policy {
    edgeview_allow      = true
    max_expire_sec      = 28800
    max_instances       = 3
    dev                 = true
    app                 = true
    ext                 = false
  }

  tag {
    key   = "env"
    value = "workshop"
  }
}

API

POST /v1/projects
{
  "name": "workshop-project",
  "title": "EVE-KVM Workshop Project",
  "type": "PROJECT_TYPE_DEPLOYMENT",
  "attestationPolicy": {
    "enforceAttestation": true
  },
  "appPolicy": {
    "apps": [{ "id": "<app_bundle_id>" }]
  },
  "edgeviewPolicy": {
    "edgeviewAllow": true,
    "maxExpireSec": 28800,
    "maxInstances": 3,
    "dev": true,
    "app": true
  },
  "tags": { "env": "workshop" }
}

What Happens on the Edge Node

  1. At the next heartbeat, EVE-OS receives the full project config bundle from the controller
  2. Attestation policy: EVE-OS begins the TPM-based PCR quote cycle; attestation results are reported back before apps are started
  3. Network Instance policy: EVE-OS creates the specified network instance(s) on the node (e.g., sets up a local switch bridge, wires it to the specified uplink port)
  4. Edge App policy: EVE-OS receives the app bundle reference and starts the download and deployment pipeline (INIT > DOWNLOAD > INSTALL > RUNNING)
  5. EdgeView policy: EVE-OS starts the EdgeView server-side container with the policy parameters; the node is now reachable via EdgeView sessions authenticated by JWT
  6. Device policy / flow logs: EVE-OS configures its network monitoring subsystem; flow records begin accumulating and are reported to the controller on schedule

Project Segmentation Patterns

Pattern Description Example
By environment Separate projects for dev, staging, prod env:dev, env:prod tags on deployments
By geography One project per region or site region:us-east, site:plant-3
By function Separate projects for different workload types type:inference, type:connectivity
By customer MSP scenario: one project per tenant Keeps edge nodes, apps, and data isolated per customer