# Monorepo \[workspace\] structure

**URL:** <https://discourse.julialang.org/t/monorepo-workspace-structure/135255>\
**Category:** Package Management\
**Created:** [January 25, 2026, 10:18am UTC](https://discourse.julialang.org/t/monorepo-workspace-structure/135255 "2026-01-25T10:18:32Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![t-bltg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/t-bltg/32/25526_2.png) [@t-bltg](https://discourse.julialang.org/u/t-bltg)\
**Post date:** [January 25, 2026, 10:18am UTC](https://discourse.julialang.org/t/monorepo-workspace-structure/135255/1 "2026-01-25T10:18:32Z")

</div>

I want to add a `[workspace]` to the monorepo [`Plots`](https://github.com/JuliaPlots/Plots.jl), mostly because of [`Dependabot`](https://discourse.julialang.org/t/psa-github-dependabot-now-supports-julia/134997).

How should I structure it ?

Will a toplevel `Project.toml` **without** a name, uuid and version work ?

**Project.toml**

```toml
[workspace]
projects = ["RecipesBase", "PlotThemes", "RecipesPipeline", "PlotsBase", "Plots", "GraphRecipes", "StatsPlots"]

```

If I add a placeholder such as :

```toml
name = "PlotsWorkspace"
uuid = "8e1d987f-9c8e-4191-8ed6-a4aafebe3192"
version = "1"

```

I end up with things errors like that :  
`Error: Missing source file for Base.PkgId(Base.UUID("8e1d987f-9c8e-4191-8ed6-a4aafebe3192"), "PlotsWorkspace"`.

Should I only add a default `name = "PlotsWorkspace"` ?

---

<div class="post-metadata">

**Author:** ![GunnarFarneback](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gunnarfarneback/32/1827_2.png) [@GunnarFarneback](https://discourse.julialang.org/u/GunnarFarneback)\
**Post date:** [January 25, 2026, 10:51am UTC](https://discourse.julialang.org/t/monorepo-workspace-structure/135255/2 "2026-01-25T10:51:53Z")

</div>

> [@t-bltg](#):
>
> Will a toplevel `Project.toml` **without** a name, uuid and version work ?

If it doesn’t I’d say it’s either a bug or a misfeature.

If you have both name and uuid, the environment is assumed to define a package.

> [@t-bltg](#):
>
> Should I only add a default `name = "PlotsWorkspace"` ?

I suppose you could but I doubt it adds much value.

---

<div class="post-metadata">

**Author:** ![asinghvi17](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/asinghvi17/32/8272_2.png) [@asinghvi17](https://discourse.julialang.org/u/asinghvi17)\
**Post date:** [February 2, 2026, 12:42am UTC](https://discourse.julialang.org/t/monorepo-workspace-structure/135255/3 "2026-02-02T00:42:51Z")

</div>

FWIW, I routinely use a toplevel Project with workspaces but no name / UUID / version to manage sets of PRs that span a set of different packages. Which is essentially the same thing as a monorepo.
