# Namespace Management

**Each time a** [**Task Developer** ](/overview/how-do-you-intend-to-use-truebit.md#task-developers)**deploys a new Truebit task, a new version is registered with a unique name.** This allows task requesters to easily identify the task for execution.

### **Namespace**&#x20;

Since Task names must be unique across the Truebit Ecosystem, and multiple Task Developers might choose the same name, we introduced the concept of namespaces. A namespace is a unique identifier that groups all the tasks registered by a specific group of developers.&#x20;

Think of it as a company name, like "Truebit," that groups all the tasks developed by that company. The namespace is owned by its creator and can be accessed by the owner and any users who have been granted permission. This makes task development accessible to a group of developers.

{% hint style="success" %}
During onboarding, we generate a default 8-digit namespace for you to start deploying tasks. You can also create a custom namespace with a name that represents you.
{% endhint %}

#### Managing a Namespace

Sometimes, it’s necessary to transfer ownership from one user to another. To do this, you can use the [namespace transfer](/developing-truebit-tasks/truebit-cli-reference.md#transfer) command in the CLI.

Additionally, you can grant permissions over a namespace to allow new users to collaborate on task development. Simply use the [namespace grant](/developing-truebit-tasks/truebit-cli-reference.md#grant) command in the CLI to grant permission. If you need to revoke a user's permission, you can do so with the [namespace revoke](/developing-truebit-tasks/truebit-cli-reference.md#revoke) command in the CLI.

These commands make it easy to manage ownership and permissions for namespaces, facilitating smooth collaboration and control over tasks.

### **Versioning**

Task development is an ongoing process, so we provide the ability to identify different versions of a task. Each time a new task ID is associated with a task name, an automatic version number is generated. This helps track the evolution and updates of tasks over time. The Task Requester can execute any version of the task.

### **Labeling**

Sometimes, we want to assign a friendly name to a specific task version, such as "latest," "stable," or "marshmallow." This friendly label helps the [Task Requester](/overview/how-do-you-intend-to-use-truebit.md#task-requesters) execute a specific version of the task identified by the specific label.

### Enabling and Disabling Tasks

Imagine a scenario where a Task Developer has deployed and registered multiple versions of the same task, with the code evolving to include new features and functionality. One day, a new bug is discovered, and the developer needs to fix it while also preventing anyone from executing a specific task version due to the critical bug.

To address this, we provide the [task disable](/developing-truebit-tasks/truebit-cli-reference.md#disable) command in the CLI, which allows developers to disable a specific version or all versions of a task.&#x20;

{% hint style="danger" %}
It's important to note that Truebit reserves the right to disable any task or task version if it is deemed to be malicious or harmful.
{% endhint %}


---

# 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://devs.truebit.io/developing-truebit-tasks/namespace-management.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.
