# Programs

Violet <mark style="color:purple;">**Programs**</mark> contain data like Requirements, Schedules and Systems. They can be used to enable granular permissions to Requirements and other features. Programs can be [shared](/features/programs/shared-programs.md) with external collaborators or [cloned](/features/programs/clone-programs.md) to accelerate requirements development.

## Create a program

Any user can create a program; begin by navigating to **Tools** → **Programs** and click **+Program**:

<figure><img src="/files/UhQ8KlAzxO2paCGBc719" alt="" width="563"><figcaption></figcaption></figure>

Alternatively, new programs can be created directly from the Violet Requirements page. In the dropdown menu at the top of the screen, select **Create New:**

<figure><img src="/files/RUAC8KmpvRu4VIThbhpk" alt="" width="470"><figcaption></figcaption></figure>

In the **New Program** window, enter a program Name and Description (optional).

## Assign team members

Assign one or more users as **Program Managers**, which grants them administrator-level permissions to manage the program, as well as edit access to any requirements within the program.&#x20;

Next, assign users or groups as **Team Members.** Team members have **read** access to the program. They will be able to view all details about the program as well as all requirements within the program. The "All Users" group consists of all users internal to your organization's Violet instance.&#x20;

See [Invite your team](/resources/administrative/invite-your-team.md) for guidance on setting up user groups.

<figure><img src="/files/v1YRprar2Yb6UCf08t93" alt="" width="563"><figcaption></figcaption></figure>

### Adding guest users

We want to make it easy to collaborate with external users while maintaining control of your data.

To invite external or "guest" users, we recommend creating a dedicated user group for any external Violet users who require read-access to the program, then add that external group as a team member for the appropriate program(s). These guest users can review Violet requirements and add comments, but can't see other Violet platform data.

## Create System Elements, Custom Requirement and Verification Fields

Finally, you can define [Systems](/features/requirements/systems.md)  and [Custom fields](/features/requirements/custom-fields.md) for the requirements and verifications in a program.

Assigning users or groups to System elements grants them **edit** access to the requirements within that system; these users are the designated requirement **owners**.&#x20;

Systems can also be used to filter, sort, visualize and track progress of Violet Requirements - read more [here](/features/requirements/systems.md).

## Hide Inactive Programs

Toggle the **Active** button to mark a program as **inactive.** This feature hides the program from the requirements drop down list.

<figure><img src="/files/4u2y5DWnrG1dKn0YQmit" alt=""><figcaption></figcaption></figure>

If you still wish to view requirements from an inactive program, use the **Show Inactive Programs** toggle in the requirements pulldown menu.

<figure><img src="/files/ncExBO2vVIOilb1wbxcQ" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.violetlabs.com/features/programs.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
