Projects
A project is a durable namespace that groups the services declared in one config. Its identity is theproject.id field in your manifest. Because a
single resident supervisor can host many projects at once, projects are how
systemg keeps unrelated (or related) workloads cleanly separated inside one
running daemon.
One supervisor, many projects. You can run a database stack, a web API, and a
batch of cron units as three independent projects under the same systemg
process. They share the runtime but keep separate state, logs, and status —
and you target each one by id with
-p/--project.Declaring a project
Set a stable id in your config:id and name:
project block.
Configs without a
project block still load. systemg derives a legacy id from
the config directory so existing deployments keep working, but explicit
project.id values are strongly recommended once more than one project shares
a supervisor.-p/--project vs -c/--config
These two flags answer different questions, and knowing which to reach for is
the single most useful thing about projects.
| Flag | What it does |
|---|---|
-c / --config | Loads and registers a project from a config file on disk. Use it the first time you start a project, or when you want to reload the manifest from a specific path. |
-p / --project | Targets a project already registered with the running supervisor, by its project.id. No file path required. |
-c is bring this project into the supervisor from disk;
-p is act on a project the supervisor already knows about.
Every registered project stores the config path it was started from. That’s
why
-p alone is enough for later commands — systemg looks up the project’s
recorded manifest for you. This is what makes multi-project workflows
ergonomic: you register once with -c, then drive everything by -p.How -p relates to sysg restart
restart -p <id> is where the stored config path pays off:
--config is omitted, restart --project reuses the config path the
supervisor already recorded for that project and reloads it from disk. Manifest
changes are applied on reload:
- services added since the last load start
- services removed from the manifest stop
- changed commands take effect
-c again once the project has a known config path.
Pass -c explicitly only when you want to reload from a different file.
Qualified service selectors
Anywhere you name a service, you can qualify it with its project usingproject_id/service_name:
-p plus the bare service name. If you supply
both a selector prefix and -p, they must match.
When a service name is unambiguous — it exists in exactly one registered
project — you can drop the project qualifier entirely and systemg resolves it
for you. If the same service name lives in multiple projects, systemg
refuses and asks you to disambiguate with
-p.-p per command
-p/--project is accepted across the commands that act on running projects:
| Command | Effect of -p <id> |
|---|---|
start | Start (or start a single service within) the named project. |
stop | Stop the named project’s services. Use --supervisor to shut everything down. |
restart | Reload the project’s stored manifest and restart its services. |
status | Scope the status table to one project. |
logs | Filter tailed logs to one project. |
inspect | Inspect a service within a specific project. |

