Replies: 2 comments
|
Implemented this in PR #770. The proposed One detail from the example: AI-assisted — Tool: Codex; model: openai/gpt-5; version: unavailable. |
0 replies
|
Thanks for the fast implementation! Yes, the rrn was an error I shouldn't have used. |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Summary
I want a way to shrink the command
fnox -P openai,database-local,no-log-upload exec -- apiinto a short form like
fnox -P api-local exec -- apieither with profile inheritance or an alias.
Problem
1. Top-level secrets are inherited by every profile
We can define shared secrets once under
[secrets]:This avoids copying
OPENAI_API_KEY, butapi,ask-llm-one-off-script,visualiser, and every other profile inherit it. Many applications and one-off scripts useOPENAI_API_KEY, but not every program should receive its value.--no-defaultsremoves the complete top-level set; it does not let a profile select individual top-level secrets.2. Complete application profiles duplicate shared secrets
Instead, each application profile can contain its complete secret set:
This gives each program only the secrets it needs and keeps runtime commands simple, but every overlapping program copies
OPENAI_API_KEYand any associated metadata or inline Age ciphertext. Rotation or policy changes must update every copy without allowing them to drift.3. Minimal profiles require every caller to compose the full set
We can deliberately make each profile small and reusable:
Each caller must then select every required capability profile:
This avoids secret duplication and prevents unrelated programs from receiving
OPENAI_API_KEY, but every launcher, service definition, CI job, and developer command must repeat the complete ordered-Plist. As applications gain more overlapping capabilities, it becomes easy to omit a profile, use the wrong order, or let different callers drift apart.The desired model is:
Example use case
The source profiles are deliberately small:
The
openai,openai-john, andopenai-janeproviders may have different recipients and different API-key values. They all deliberately resolve to the same final environment-variable name. A later developer-specific profile can override the shared/default key without copying any of the application's other secret declarations.Applications and roles need overlapping, but non-identical, subsets:
Here,
visualiserandci-releasenever select an OpenAI profile, so they should not seeOPENAI_API_KEYeven if the caller happens to possess an identity that could decrypt it. Other AI-enabled scripts can selectively reuseopenai,openai-john, oropenai-janewithout making AI access a global default.Today, each row must become either a repeated CLI profile list or a profile that copies all of the underlying secret entries.
Proposed API: selective profile inheritance
One possible syntax is an ordered
inheritslist:Alternative API: named aliases
If inheritance inside a profile is undesirable, a separate alias table would provide the same runtime ergonomics:
Either way, runtime usage becomes:
All reactions