Alchemy drops secret wrappers for Config
This PR proposes dropping `Alchemy.Secret` and `Alchemy.Variable` in favor of plain `effect/Config`, with config values yielded during Worker or Layer init automatically bound into the runtime environment. The result should be less wrapper code, cleaner client initialization, and a more idiomatic Effect-based API, but it also makes the init-vs-runtime boundary more important for users to understand.
Hot take: this is a good ergonomics cleanup, but it trades helper-driven convenience for stricter phase discipline.
- –Replacing bespoke helpers with `Config` reduces abstraction and aligns the library with Effect’s native patterns.
- –Automatic binding during init removes the accessor pattern and should make secret/config usage feel much lighter.
- –The main risk is a footgun: if config is only evaluated at runtime, it may not be bound to the Worker.
- –This is strongest for users already committed to Effect; it is less compelling if they want Alchemy to hide phase complexity.
DISCOVERED
14d ago
2026-05-27
PUBLISHED
14d ago
2026-05-27
RELEVANCE
AUTHOR
samgoodwin89