Install the aggregate command.
The crate is currently available from the Flyology source repository. Build and install it with Alire from the crate directory.
git clone https://github.com/flyology-ada/flyology.git
cd flyology/flyology_cli
alr install
flyology --version
Alire installs flyology into its configured binary prefix. Add that prefix to PATH if the shell cannot find the command.
Initialize the current directory or a destination.
Run flyology init without a destination to use the current directory. The CLI derives a default crate name from that directory. It prompts for an omitted crate kind and name.
mkdir telemetry_service
cd telemetry_service
flyology init
Pass a destination, name, and crate kind with --yes for non-interactive initialization. The command uses the documented profile, agent, and website defaults. It also approves Flyology index installation.
flyology init telemetry_service \
--name telemetry_service \
--bin --yes
Choose the crate shape and project profile.
The crate shape controls the generated Ada source and GPR project. Consumer metadata is the default. Use --flyology-project only for a crate maintained as part of Flyology. Both profiles add flyology = "^0.1.0" to alire.toml.
--bin- Creates an executable project, a main procedure, and an Alire executable entry.
--lib- Creates a static library project and a root package specification.
- No profile flag
- Creates downstream consumer metadata. Website generation defaults to disabled.
--flyology-project- Adds Flyology website metadata and tags. It does not enable website generation.
With --yes, omitted choices create a binary consumer. Agent guidance remains enabled, and website generation remains disabled for either profile.
Provision shared agent guidance.
Agent guidance is enabled by default. The CLI creates an apm.yml dependency on the flyology-ada/agents Ada-library profile. Website projects also receive the Flyology website profile.
The CLI then runs apm install and apm compile --target codex in the new project. Install APM 0.28.0, or pass --no-agents to skip this setup.
flyology init wire_protocol \
--lib --flyology-project --yes
Use --no-agents when the repository manages agent resources another way.
Add website-kit and generation scripts.
Use --website to add flyology-ada/website-kit at vendor/website-kit. The CLI initializes a Git repository first when the destination does not have one.
The generated files include a starter page, GNATdoc theme metadata, an API documentation script, and a complete site build script.
alr install gnatdoc_bin
./scripts/build-site.sh
Review the generated project boundary.
The CLI writes only the selected project surface. Generated build directories remain ignored.
telemetry_service/
├── .gitignore
├── AGENTS.md # generated by APM
├── README.md
├── alire.toml
├── apm.lock.yaml # generated by APM
├── apm.yml
├── telemetry_service.gpr
└── src/
└── telemetry_service.adb
The GPR project uses the repository's 110-column Ada format settings. It also excludes Flyology from downstream GNATdoc analysis to avoid documenting the runtime dependency as part of the consumer API.
Extend the aggregate command through PATH.
When a command is not built in, the CLI searches PATH for flyology-<command>. It passes every remaining argument without shell parsing and returns the extension command's exit status.
flyology deploy staging --wait
# Equivalent executable invocation:
flyology-deploy staging --wait
This contract lets another crate install a focused command without changing flyology_cli. If no matching executable exists, the CLI reports an unknown command and returns failure.
Resolve collisions before initialization.
The CLI checks each file that it writes directly before writing project files. It refuses to overwrite an existing manifest, GPR project, source file, README, ignore file, APM manifest, website tree, or site script.
APM and Git manage AGENTS.md, apm.lock.yaml, and .gitmodules. Review existing integration files before enabling those tools.
An external command can fail after project files are written. For example, APM installation or Git submodule setup can fail because the network is unavailable. The CLI keeps those files for inspection and reports the command that failed; it does not delete the destination automatically.
flyology init --help