| CARVIEW |
Select Language
HTTP/2 200
date: Tue, 30 Dec 2025 05:38:02 GMT
content-type: text/html; charset=utf-8
vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With
etag: W/"fdbff8861eb9d0d4e236cba75adf8ed9"
cache-control: max-age=0, private, must-revalidate
strict-transport-security: max-age=31536000; includeSubdomains; preload
x-frame-options: deny
x-content-type-options: nosniff
x-xss-protection: 0
referrer-policy: no-referrer-when-downgrade
content-security-policy: default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com github.githubassets.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com wss://alive-staging.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com marketplace-screenshots.githubusercontent.com/ copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com github.githubassets.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/
server: github.com
content-encoding: gzip
accept-ranges: bytes
set-cookie: _gh_sess=9OfKwC8ddI9AFvGrhNbCaecDCNiGVAjmnq5jnSP1J2VphMcBzpzIxHeXdDjd0cC6ImHvs1UpeOh9vlq19reT3c7ZBtSYgGZGy9upEiUex5T1E4Qdq26MciwSmSzYGddpUaTKcEgz9ZyrtruK5WaJmVndopcnpQMsZk0Ft0axqdd0C9OxJaTnJrwz3%2B4u0IR4objZB2IcgruP%2F3xWnHFU5l6dJ5nkSFZiESPDIBifmDxc%2BKX4DAff3FxbJtFPrpm2d11HRK14gZk9hdYlc%2F96Tg%3D%3D--09uec5FR90p%2B3haJ--GtsQyizqtzUf9DqTXeRpgQ%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
set-cookie: _octo=GH1.1.1805767112.1767073081; Path=/; Domain=github.com; Expires=Wed, 30 Dec 2026 05:38:01 GMT; Secure; SameSite=Lax
set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Wed, 30 Dec 2026 05:38:01 GMT; HttpOnly; Secure; SameSite=Lax
x-github-request-id: C9D0:D9BF:15E95C:18679D:69536539
GitHub - biox/pa: a simple password manager. encryption via age, written in portable posix shell
Skip to content
Navigation Menu
{{ message }}
-
Notifications
You must be signed in to change notification settings - Fork 23
a simple password manager. encryption via age, written in portable posix shell
License
biox/pa
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
pa
a simple password manager
https://passwordass.org
features
- encryption implemented using age[1]
- automatic key generation
- automatic git tracking
- multiple identity/recipient support
- written in portable posix shell
- simple to extend
- only ~180 lines of code
- pronounced "pah" - as in "papa"
dependencies
- age
- age-keygen
- git (optional)
usage
pa
a simple password manager
commands:
[a]dd [name] - Add a password entry.
[d]el [name] - Delete a password entry.
[e]dit [name] - Edit a password entry with vi.
[g]it [cmd] - Run git command in the password dir.
[l]ist [cat] - List all entries in a category.
[s]how [name] - Show password for an entry.
env vars:
data directory: export PA_DIR=~/.local/share/pa/passwords
password length: export PA_LENGTH=50
password pattern: export PA_PATTERN=A-Za-z0-9-_
disable tracking: export PA_NOGIT=
command examples
$ pa add test
generate a password? [y/N]: y
saved 'test' to the store.
$ pa list
test
$ pa show test
vJwKuEBtxBVvdR-xppTdfofIei0oLlkoSK4OCSP2bMEBsP6ahM
$ pa edit test
<opens $EDITOR or vi>
$ pa del test
delete password 'test'? [y/N]: y
$ pa git log --oneline
bbe85dc (HEAD -> main) delete 'test'
b597c04 edit 'test'
cba20cc add 'test'
ef76f7e initial commit
faq
> how does this differ from pass, passage, etc?
pa is smaller. simpler. cleaner. plainer.
harder. better. faster. stronger.
more than ever, hour after hour
work is never over
> is pa secure?
if you would like to understand the
security characteristics of pa, please
read my blog post[2], and my explanation[3].
> why u make this?
see [2].
> where are my keys?
probably the default locations:
~/.local/share/pa/identities
~/.local/share/pa/recipients
> where are my passwords?
probably the default location:
~/.local/share/pa/passwords
> how do i rename a password?
cd ~/.local/share/pa/passwords
mv foo.age bar.age
credits
- pa was originally forked from pash[4] by dylanaraps[5]
- age[1] is a project by Filippo Valsorda[6]
refs
[1]: https://age-encryption.org
[2]: https://j3s.sh/thought/storing-passwords-with-age.html
[3]: #10 (comment)
[4]: https://github.com/dylanaraps/pash
[5]: https://github.com/dylanaraps
[6]: https://filippo.io
About
a simple password manager. encryption via age, written in portable posix shell
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published
You can’t perform that action at this time.