# Private Registry

Terraform provides a public registry, where you can share and reuse your terraform modules or providers, but sometimes you need to define a Terraform module that can be accessed only within your organization.

Terrakube provides a private registry that works similarly to the [public Terraform Registry](https://developer.hashicorp.com/terraform/registry) and helps you share [Terraform providers](https://developer.hashicorp.com/terraform/language/providers) and [Terraform modules](https://developer.hashicorp.com/terraform/language/modules) privately across your organization. You can use any of the main [VCS providers](https://docs.terrakube.io/2.20.0/user-guide/vcs-providers) to maintain your terraform module code.

{% hint style="info" %}
At the moment the Terrakube UI only supports [publish private modules,](https://docs.terrakube.io/2.20.0/user-guide/private-registry/publishing-private-modules) but you can publish providers using the [Terrakube API](https://docs.terrakube.io/2.20.0/api/methods/provider)
{% endhint %}

In this section:

{% content-ref url="private-registry/publishing-private-modules" %}
[publishing-private-modules](https://docs.terrakube.io/2.20.0/user-guide/private-registry/publishing-private-modules)
{% endcontent-ref %}

{% content-ref url="private-registry/using-private-modules" %}
[using-private-modules](https://docs.terrakube.io/2.20.0/user-guide/private-registry/using-private-modules)
{% endcontent-ref %}
