base on 🔐 Securely share sensitive information with automatic expiration & deletion after a set number of views or duration. Track who, what and when with full audit logs. <div align="center"> [![Password Pusher Front Page](https://pwpush.fra1.cdn.digitaloceanspaces.com/branding/logos/horizontal-logo-small.png)](https://pwpush.com/) __Simple & Secure Password Sharing with Auto-Expiration of Shared Items__ [![](https://badgen.net/twitter/follow/pwpush)](https://twitter.com/pwpush) ![](https://badgen.net/github/stars/pglombardo/PasswordPusher) [![](https://badgen.net/uptime-robot/month/m789048867-17b5770ccd78208645662f1f)](https://stats.uptimerobot.com/6xJjNtPr93) [![](https://badgen.net/docker/pulls/pglombardo/pwpush-ephemeral)](https://hub.docker.com/repositories) [![GitHub Workflow Status (with event)](https://img.shields.io/github/actions/workflow/status/pglombardo/PasswordPusher/ruby-tests.yml)](https://github.com/pglombardo/PasswordPusher/actions/workflows/ruby-tests.yml) [![Dependencies Status](https://img.shields.io/badge/dependencies-up%20to%20date-brightgreen.svg)](https://github.com/pglombardo/pwpush-cli/pulls?utf8=%E2%9C%93&q=is%3Apr%20author%3Aapp%2Fdependabot) [![Semantic Versions](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--versions-e10079.svg)](https://github.com/pglombardo/pwpush-cli/releases) [![License](https://img.shields.io/github/license/pglombardo/PasswordPusher)](https://github.com/pglombardo/PasswordPusher/blob/master/LICENSE) </div> ------ Give your users the tools to be secure by default. Password Pusher is an open source application to communicate sensitive information over the web. Secret links expire after a certain number of views and/or time has passed. Hosted at [pwpush.com](https://pwpush.com) but you can also easily run your own private instance with just a few steps. * __Easy-to-install:__ Host your own via Docker, a cloud service or just use [pwpush.com](https://pwpush.com) * __Open Source:__ No blackbox code. Only trusted, tested and reviewed open source code. * __Versatile:__ Push passwords, text, files or URLs that auto-expire and self delete. * __Audit logging:__ Track and control what you've shared and see who has viewed it. * __Encrypted storage:__ All sensitive data is stored encrypted and deleted entirely once expired. * __Host your own:__ Database backed or ephemeral, easily run your own instance isolated from the world. * __JSON API:__ Raw JSON API available for 3rd party tools or command line via `curl` or `wget`. * __Command line interface:__ Automate your password distribution with CLI tools or custom scripts. * __Logins__: Invite your colleagues and track what is pushed and who retrieved it. * __Admin Dashboard:__ Manage your self-hosted instance with a built in admin dashboard. * __Internationalized:__ 29 language translations are bundled in. Easily selectable via UI or URL * __Themes:__ [26 themes](https://docs.pwpush.com/docs/themes/) bundled in courtesy of [Bootswatch](https://github.com/thomaspark/bootswatch). Select with a simple environment variable. * __Unbranded delivery page:__ No logos, superfluous text or unrelated links to confuse end users. * __Customizable:__ Change text and default options via environment variables. * __Light & dark themes:__ Via CSS @media integration, the default site theme follows your local preferences. * __Re-Brandable:__ Customize the site name, tagline and logo to fit your environment. * __Custom CSS:__ Bundle in your own custom CSS to add your own design. * __>10 Years Old:__ Password Pusher has securely delivered millions and millions of passwords in its 10 year history. * __Actively Maintained:__ I happily work for the good karma of the great IT/Security community. * __Honest Software:__ Open source written and maintained by [me](https://github.com/pglombardo) with the help of some great contributors. No organizations, corporations or evil agendas. 💌 --> Sign up for [the newsletter](https://buttondown.email/pwpush?tag=github) to get updates on big releases, security issues, new features, integrations, tips and more. Password Pusher is also [on Twitter](https://twitter.com/pwpush), [Gettr](https://gettr.com/user/pwpush) and [on Facebook](https://www.facebook.com/pwpush) ----- [![](./app/assets/images/features/front-page-thumb.png)](./app/assets/images/features/front-page-large.png) [![](./app/assets/images/features/audit-log-thumb.png)](./app/assets/images/features/audit-log-large.png) [![](./app/assets/images/features/secret-url-languages-thumb.png)](./app/assets/images/features/secret-url-languages-large.png) [![](./app/assets/images/features/password-generator-thumb.png)](./app/assets/images/features/password-generator-large.png) [![](./app/assets/images/features/dark-theme-thumb.png)](./app/assets/images/features/dark-theme.gif) [![](./app/assets/images/features/preliminary-step-thumb.png)](./app/assets/images/features/preliminary-step.gif) # Editions If you wish the self-host, this open source version is available immediately. You can try it out at [https://oss.pwpush.com](https://oss.pwpush.com) or read on for how to get started. In 2024, I introduced a set of **Pro features** exclusively on [pwpush.com](https://pwpush.com) to better support the project. These Pro features are part of the new _Feature Pipeline_ and are migrated to the OSS edition periodically over time. You can read more about how this works [here](https://docs.pwpush.com/docs/editions/). To see the differences between pwpush.com and the OSS edition take a look at the [Feature Matrix](https://pwpush.com/features#matrix). # ⚡️ Quick Start → Go to [https://pwpush.com](https://pwpush.com) and try it out. _or_ → Run your own instance with `docker run -d -p "5100:5100" pglombardo/pwpush:latest` or a [production ready setup with a database & SSL/TLS](https://github.com/pglombardo/PasswordPusher/tree/master/containers/docker/all-in-one). _or_ → Use one of the [3rd party tools](https://docs.pwpush.com/docs/3rd-party-tools/) that interface with Password Pusher. # Documentation See the full [Password Pusher documentation here](https://docs.pwpush.com). # 📼 Credits ## Translators Thanks to our great translators! | Name | Language | | |---|---|---| | [Oyale](https://github.com/oyale) | [Catalan](https://pwpush.com/ca) | | | Finn Skaaning | [Danish](https://pwpush.com/da/p/ny) | | | [Mihail Tchetchelnitski](https://github.com/mtchetch) | [Finnish](https://pwpush.com/fi/p/uusi) | | | [Thibaut](https://github.com/tibo59) | [French](https://pwpush.com/fr/p/Nouveau) | | | Thomas Wölk | [German](https://pwpush.com/de/p/neu) | [Github](https://github.com/confluencepoint/), [Twitter](https://twitter.com/confluencepoint) | | Martin Otto |[German](https://pwpush.com/de/p/neu) | | | Robin Jørgensen |[Norwegian](https://pwpush.com/no/p/ny) | | | [Łukasz](https://github.com/drpt)|[Polish](https://pwpush.com/pl/p/nowy) | | | [Jair Henrique](https://github.com/jairhenrique/) | [Portuguese](https://pwpush.com/pt-br/p/novo) | | | [Fabrício Rodrigues](https://www.linkedin.com/in/ifabriciorodrigues/)| [Portuguese](https://pwpush.com/pt-br/p/novo) | | | [Ivan Freitas](https://github.com/IvanMFreitas)| [Portuguese](https://pwpush.com/pt-br/p/novo) | | | Sara Faria| [Portuguese](https://pwpush.com/pt-br/p/novo) | | | [Oyale](https://github.com/oyale) |[Spanish](https://pwpush.com/pt-br/p/novo) | | | johan323 |[Swedish](https://pwpush.com/sv/p/ny) | | | Fredrik Arvas|[Swedish](https://pwpush.com/sv/p/ny) | | | Pedro Marques | [European Portuguese](https://pwpush.com/pt-pt/p/novo) | | Also thanks to [translation.io](https://translation.io) for their great service in managing translations. It's also generously free for open source projects. ## Containers Thanks to: * [@fiskhest](https://github.com/fiskhest) the [Kubernetes installation instructions and manifests](https://github.com/pglombardo/PasswordPusher/tree/master/containers/kubernetes). * [@sfarosu](https://github.com/sfarosu) for [contributing](https://github.com/pglombardo/PasswordPusher/pull/82) the Docker, Kubernetes & OpenShift container support. * [sirux88](https://github.com/sirux88) for cleaning up the Docker files and adding multistage builds. ## Other Thanks to: * [@iandunn](https://github.com/iandunn) for better password form security. * [Kasper 'kapöw' Grubbe](https://github.com/kaspergrubbe) for the [JSON POST fix](https://github.com/pglombardo/PasswordPusher/pull/3). * [JarvisAndPi](http://www.reddit.com/user/JarvisAndPi) for the favicon design ...and many more. See the [Contributors page](https://github.com/pglombardo/PasswordPusher/graphs/contributors) for more details. # 🛡 License [![License](https://img.shields.io/github/license/pglombardo/PasswordPusher)](https://github.com/pglombardo/PasswordPusher/blob/master/LICENSE) This project is licensed under the terms of the `Apache License 2.0` license. See [LICENSE](https://github.com/pglombardo/PasswordPusher/blob/master/LICENSE) for more details. # 📃 Citation ```bibtex @misc{PasswordPusher, author = {Peter Giacomo Lombardo}, title = {An application to securely communicate passwords over the web. Passwords automatically expire after a certain number of views and/or time has passed.}, year = {2024}, publisher = {GitHub}, journal = {GitHub repository}, howpublished = {\url{https://github.com/pglombardo/PasswordPusher}} } ``` ", Assign "at most 3 tags" to the expected json: {"id":"10394","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"