⭐ Found this useful? Give it a star on GitHub so more developers can find it.
Symfony bundle for Yopass-style E2E encrypted secret sharing: client-side libsodium encryption, expiration, read limits, and public reveal pages.
FrankenPHP worker mode: Supported — stateless controllers and services; tested with the Symfony 8 demo using FrankenPHP (see Demo with FrankenPHP).
- Browser-side encryption (
libsodiumsecretbox); server stores ciphertext only - Text and file payloads (max 512 KB files; file tab requires
file_handlerservice) - Configurable expiration options, max-read limits, list pagination, and retention purge
- Auto-generated decryption key or custom password mode
- One-click links via
?decrypt_key=query parameter; short links with manual key entry - Authenticated manage UI + anonymous public reveal/consume routes
- Configurable routes, table prefix, templates, and pluggable access control
- Share events — customize list queries and per-share access (teams, grants, roles) without built-in ACL
composer require nowo-tech/yopass-bundleSee Installation for Flex recipe, Doctrine schema, routes, and security firewall setup.
# config/packages/nowo_yopass.yaml
nowo_yopass:
user_class: App\Entity\User
table_prefix: yopass_
security:
access_checker: App\Security\CustomYopassAccessChecker # optionalFull reference: Configuration.
- Manage UI:
/tools/yopass(configurable) - Public reveal:
/share/{id}or/share/{id}?decrypt_key=…(configurable) - Override Twig:
templates/bundles/NowoYopassBundle/
See Usage and Access control events.
make -C demo up-symfony8
# Demo started at: http://localhost:8022 → Yopass CRUD at /tools/yopass (auto-login)- Installation
- Configuration
- Usage
- Contributing
- Changelog
- Upgrading
- Release process
- Security
- Engram
- Spec-driven development
- Share list and access events
- Demo with FrankenPHP
- Local file storage (demo default)
- AWS S3 file shares example (local, gitignored)
make test # PHPUnit
make test-coverage # PHP coverage + percentage script
make test-ts # Vitest (crypto)
make release-check # Full pre-release chain| Language | Coverage |
|---|---|
| PHP | 100% (Lines) — make test-coverage-100 |
| TypeScript | 74.21% (Lines) — make test-ts (password-mode paths require browser sodium runtime) |
MIT — see LICENSE.