• Stars
    star
    376
  • Rank 113,108 (Top 3 %)
  • Language
    Rust
  • License
    Other
  • Created over 4 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

unofficial bitwarden cli

rbw

This is an unofficial command line client for Bitwarden. Although it does come with its own command line client, this client is limited by being stateless - to use it, you're required to manually lock and unlock the client, and pass the temporary keys around in environment variables, which makes it very difficult to use. This client avoids this problem by maintaining a background process which is able to hold the keys in memory, similar to the way that ssh-agent or gpg-agent work. This allows the client to be used in a much simpler way, with the background agent taking care of maintaining the necessary state.

Maintenance

I consider rbw to be essentially feature-complete for me at this point. While I still use it on a daily basis, and will continue to fix regressions as they occur, I am unlikely to spend time implementing new features on my own. If you would like to see new functionality in rbw, I am more than happy to review and merge pull requests implementing those features.

Installation

Arch Linux

rbw is available in the community repository. Alternatively, you can install rbw-git from the AUR, which will always build from the latest master commit.

Debian/Ubuntu

You can download a Debian package from https://git.tozt.net/rbw/releases/deb/ . The packages are signed by minisign, and can be verified using the public key RWTM0AZ5RpROOfAIWx1HvYQ6pw1+FKwN6526UFTKNImP/Hz3ynCFst3r.

Other

With a working Rust installation, rbw can be installed via cargo install rbw. This requires that the pinentry program is installed (to display password prompts).

Configuration

Configuration options are set using the rbw config command. Available configuration options:

  • email: The email address to use as the account name when logging into the Bitwarden server. Required.
  • base_url: The URL of the Bitwarden server to use. Defaults to the official server at https://api.bitwarden.com/ if unset.
  • identity_url: The URL of the Bitwarden identity server to use. If unset, will use the /identity path on the configured base_url, or https://identity.bitwarden.com/ if no base_url is set.
  • lock_timeout: The number of seconds to keep the master keys in memory for before requiring the password to be entered again. Defaults to 3600 (one hour).
  • sync_interval: rbw will automatically sync the database from the server at an interval of this many seconds, while the agent is running. Setting this value to 0 disables this behavior. Defaults to 3600 (one hour).
  • pinentry: The pinentry executable to use. Defaults to pinentry.

Usage

Commands can generally be used directly, and will handle logging in or unlocking as necessary. For instance, running rbw ls will run rbw unlock to unlock the password database before generating the list of entries (but will not attempt to log in to the server), rbw sync will automatically run rbw login to log in to the server before downloading the password database (but will not unlock the database), and rbw add will do both.

Logging into the server and unlocking the database will only be done as necessary, so running rbw login when you are already logged in will do nothing, and similarly for rbw unlock. If necessary, you can explicitly log out by running rbw purge, and you can explicitly lock the database by running rbw lock or rbw stop-agent.

rbw help can be used to get more information about the available functionality.

Run rbw get <name> to get your passwords. If you also want to get the username or the note associated, you can use the flag --full. You can also use the flag --field={field} to get whatever default or custom field you want. The --raw flag will show the output as JSON.

Note to users of the official Bitwarden server (at bitwarden.com): The official server has a tendency to detect command line traffic as bot traffic (see this issue for details). In order to use rbw with the official Bitwarden server, you will need to first run rbw register to register each device using rbw with the Bitwarden server. This will prompt you for your personal API key which you can find using the instructions here.

Related projects

  • rofi-rbw: A rofi frontend for Bitwarden
  • bw-ssh: Manage SSH key passphrases in Bitwarden

More Repositories

1

reply

read, eval, print, loop, yay!
Perl
51
star
2

vt100-rust

Rust
44
star
3

runes

a modern terminal client
C
36
star
4

spreadsheet-parsexlsx

parse XLSX files
Perl
27
star
5

conf

my configuration files
Perl
26
star
6

teleterm

Rust
17
star
7

bread-board-declare

create Bread::Board containers as normal Moose objects
Perl
10
star
8

package-stash

routines for manipulating stashes
Perl
10
star
9

smartmatch

pluggable smart matching backends
C
9
star
10

moosex-nonmoose

easy subclassing of non-Moose classes
Perl
9
star
11

pty-process

Rust
9
star
12

vim-foldtext

vim plugin for easy customization of the foldtext option
Vim Script
8
star
13

libvt100

C
8
star
14

nbsh

Rust
8
star
15

luancurses

ncurses library for lua
C
8
star
16

luasignal

signal handling library for lua
C
7
star
17

sonnet

forth-like language interpreter, written in lua
Lua
7
star
18

luairc

irc framework for lua
Lua
6
star
19

text-handlebars

http://handlebarsjs.com/ for Text::Xslate
Perl
6
star
20

games-emulation-dcpu16

emulator for the DCPU-16 (http://0x10c.com/)
Perl
6
star
21

circular-require

detect circularity in use/require statements
Perl
6
star
22

vim-skeletons

open new files with skeleton code already in place in vim
Vim Script
5
star
23

rust-term

terminal handling for rust
Rust
5
star
24

language-teco

a perl implementation of the TECO language
Perl
5
star
25

nes-snake

Assembly
5
star
26

parse-keyword

DEPRECATED: write syntax extensions in perl
Perl
5
star
27

python-termcast-client

Python
5
star
28

app-termcast

broadcast your terminal sessions for remote viewing
Perl
5
star
29

python-termcast-server

Python
5
star
30

task-belike-doy

modules I use
Perl
4
star
31

narwhal

OX-based wiki
Perl
4
star
32

rust-lua

lua bindings for rust
Rust
4
star
33

eval-closure

safely and cleanly create closures via string eval
Perl
4
star
34

package-stash-xs

faster and more correct implementation of the Package::Stash API
C
4
star
35

python-mop

Python
4
star
36

crawlbot

irc bot for crawl development
Perl
3
star
37

smartmatch-engine-core

default smartmatch implementation from 5.10 - 5.14
C
3
star
38

bot-flowdock-irc

IRC <-> Flowdock bridge
Perl
3
star
39

lingua-hi-romanize

various styles of hindi romanization
Perl
3
star
40

dist-checkconflicts

declare version conflicts for your dist
Perl
3
star
41

moosex-abc

abstract base classes for moose
Perl
3
star
42

vim-textobj

Allows configuration of custom text objects
Vim Script
3
star
43

pod-weaver-section-template

add pod section from a Text::Template template
Perl
3
star
44

lastfm-export

data exporter for last.fm
Perl
3
star
45

plack-client

easily interact with local or remote psgi apps
Perl
3
star
46

smartmatch-engine-rjbs

implementation of rjbs's smartmatch proposal
Perl
3
star
47

fancy-prompt

fancy-prompt is an improved shell prompt with several useful features
Rust
3
star
48

moosex-role-matcher

generic object matching based on attributes and methods
Perl
2
star
49

app-hiveminder

command line interface to http://hiveminder.com/
Perl
2
star
50

nes-input-test

Assembly
2
star
51

graph-implicit

algorithms for operating on implicitly-specified graphs
Perl
2
star
52

io-socket-telnet-halfduplex

more reliable telnet communication
Perl
2
star
53

class-refresh

refresh your classes during runtime
Perl
2
star
54

class-info

mop-based class introspection
Perl
2
star
55

web-request

common request class for web frameworks
Perl
2
star
56

try

nicer exception handling syntax
Perl
2
star
57

games-smtnocturne-demons

look up information about demon fusion in Shin Megami Tensei: Nocturne
Perl
2
star
58

vim-diff-changes

Diff buffer contents against file on disk or in the VCS
Vim Script
2
star
59

moosex-attribute-shorthand

attribute option bundles
Perl
2
star
60

games-word

utility functions for writing word games
Perl
2
star
61

ox-view-tt

View wrapper class for TT renderers
Perl
2
star
62

io-pty-easy

easy interface to IO::Pty
Perl
2
star
63

dist-zilla-pluginbundle-doy

Dist::Zilla plugins for me
Perl
2
star
64

textmode

Rust
2
star
65

carp-always-color

Carp::Always, but with color
Perl
2
star
66

ikiwiki-plugin-highlight

syntax highlighting for ikiwiki, based on Syntax::Highlight::Engine::Kate
Perl
2
star
67

ynab-api

Rust
2
star
68

bot-games

bot for moderating games over the internet
Perl
2
star
69

log-dispatch-channels

adds separate logging channels to Log::Dispatch
Perl
2
star
70

im-engine-plugin-commands

command-centered bot plugin for IM::Engine
Perl
1
star
71

app-ttyrec

record interactive terminal sessions
Perl
1
star
72

moosex-mangle

mangle the argument list or return values of your methods
Perl
1
star
73

extutils-makemaker-dist-zilla-develop

create bare-bones Makefile.PL files for use with dzil
Perl
1
star
74

resource-pack-jquery

Resource::Pack resource for the jQuery Javascript library
JavaScript
1
star
75

libvt100-python

Python
1
star
76

lexically

Perl
1
star
77

dzen

Fork of http://dzen.googlecode.com/svn/
C
1
star
78

net-termcast

interface to termcast.org
Perl
1
star
79

app-nopaste-service-mathbin

nopaste for http://mathbin.net/
Perl
1
star
80

games-smtnocturne-fusion

Demon fusion rules for Shin Megami Tensei Nocturne
Perl
1
star
81

resume

my resume
TeX
1
star
82

resource-pack-json

Resource::Pack resource for the JSON Javascript library
JavaScript
1
star
83

plack-middleware-class-refresh

Refresh your app classes with Class::Refresh before requests
Perl
1
star
84

projecteuler

my project euler attempts
Perl
1
star
85

rust-dlopen

Rust
1
star
86

locale-pofilemanager

Helpers for keeping a set of related .po files in sync
Perl
1
star
87

crawl-ref

Dungeon Crawl Stone Soup
C++
1
star
88

moosex-exporter-easy

less boilerplate for Moose::Exporter
Perl
1
star
89

dist-zilla-plugin-makefilepl-develop

dzil plugin for simplifying the use of ExtUtils::MakeMaker::Dist::Zilla::Develop
Perl
1
star
90

kiokudb-serializer-crypt

encrypt data stored in kiokudb
Perl
1
star
91

linkulator-twitter

script for mirroring links at http://offtopic.akrasiac.org/ to twitter
Perl
1
star
92

term-filter

Run interactive terminal apps, while filtering input and output
Perl
1
star
93

scala-test-more

port of Test::More to scala
Scala
1
star
94

net-flowdock-stream

streaming api for flowdock.com
Perl
1
star
95

carp-reply

get a repl on exceptions in your program
Perl
1
star
96

oxx-encoding

use arbitrary encodings with ox
Perl
1
star
97

reaction

fork of the catagits reaction repo
Perl
1
star
98

nbsh-old

Rust
1
star
99

plack-middleware-auth-htpasswd

http basic authentication through apache-style .htpasswd files
Perl
1
star
100

moosex-module-refresh

Module::Refresh for Moose classes
Perl
1
star