• Stars
    star
    4,208
  • Rank 9,817 (Top 0.2 %)
  • Language
    TypeScript
  • License
    GNU General Publi...
  • Created over 8 years ago
  • Updated 23 days ago

Reviews

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

Repository Details

πŸ”‘ Cross-Platform Passwords & Secrets Vault

Buttercup Desktop

Buttercup for Desktop - Mac, Linux and Windows

Buttercup Latest version Chat securely on Keybase Discuss on Reddit

Buttercup Desktop Β²

About

Buttercup is a free, open-source and cross-platform password manager, built on NodeJS with Typescript. It uses strong industry-standard encryption to protect your passwords and credentials (among other data you store in Buttercup vaults) at rest, within vault files (.bcup). Vaults can be loaded from and saved to a number of sources, such as the local filesystem, Dropbox, Google Drive or any WebDAV-enabled service (like ownCloud or Nextcloud ΒΉ).

Why you need a password manager

Password management is a crucial tool when you have any online presence. It's vital that all of your accounts online use strong and unique passwords so that they're much more difficult to break in to. Even if one of your accounts are breached, having unique passwords means that the likelihood of the attacker gaining further access to your accounts portfolio is greatly reduced.

Without a password manager, such as Buttercup, it would be very tedious to manage different passwords for each service. If you remember your passwords it's a good sign that they're not strong enough. Ideally you should memorise a primary password for your vault, and not know any of the account-specific passwords off the top of your head.

Precautions

Buttercup securely encrypts your data in protected files, but this security is only as strong as the weakest component - and this is very often the primary password used to lock and unlock your vault. Follow these basic guidelines to ensure that your vault is safe even if exposed:

  • Choose a unique password that is not used elsewhere
  • Use a highly-varied set of different characters - such as alpha-numeric, symbols and spaces
  • Use a long password - the longer the better
  • Don't include words or names in the password
  • Never share your password with anyone

It is very important to note that no one associated with Buttercup will ever request your personal vault or its primary password. Do not share it or any of its related details with anyone. Developers or contributors working with Buttercup may request example vaults created via your system to try and reproduce issues, but please ensure to never use your real password or store actual credentails within such vaults.

Versions

The current stable version is 2. We recommend upgrading if you're still on v1, as it is no longer being actively maintained. You can still browse the v1 source and documentation here.

Operating Systems

Buttercup Desktop is officially supported on:

  • Most linux distributions (x64), such as Ubuntu
  • MacOS (x64, non-ARM)
  • Windows 10 (x64)

Arch Linux

Buttercup is also available for Arch via the AUR. This release channel is maintained by our community.

Some Arch users have reported the occasional segfault - if you experience this please try this solution before creating an issue.

32bit builds (x86)

There are some 32bit builds available, but please note that these are not officially supported. Issues, bug reports and questions regarding 32bit binaries are not allowed and will be closed without notice. PRs to fix 32bit support are permitted.

Portability

Buttercup provides a portable Windows version. Look for the release with the name Buttercup-win-x64-2.0.0-portable.exe where 2.0.0 is the version and x64 is the architecture.

Although not explicitly portable, both the Mac zip and Linux AppImage formats are more or less standalone. They still write to the standard config/log destinations, however.

To make the most of the portable version, some enviroment variables are required:

Enviroment Variables Description
BUTTERCUP_HOME_DIR If provided buttercup will use this path for saving configrations , user settings or even temprorary files
BUTTERCUP_CONFIG_DIR Stores user settings, not allways needed but can be used to change config location or will default to BUTTERCUP_HOME_DIR Optional: Only activates if BUTTERCUP_HOME_DIR is provided
BUTTERCUP_TEMP_DIR Same as BUTTERCUP_CONFIG_DIR but stores temprory files Optional: Only activates if BUTTERCUP_HOME_DIR is provided

Sample ButtercupLauncher.bat for Windows portable executable

This example stores user settings and cache on the portable folder, but stores temprory files on the host PC.

@ECHO OFF
if not exist "%~dp0Buttercup" mkdir "%~dp0Buttercup"
set "BUTTERCUP_HOME_DIR=%~dp0Buttercup"
set "BUTTERCUP_TEMP_DIR=%temp%"
start %~dp0Buttercup.exe %*

Configuration

Configuration files are stored in OS-specific locations.

Command-Line arguments

The following arguments can be provided to Buttercup, but are all optional.

Argument Description
--no-window Disables the automatic opening of the main window upon launch. Useful for when Buttercup is automatically started at boot time.

App config

Application configuration.

  • Linux: $XDG_CONFIG_HOME/Buttercup/desktop.config.json
  • Mac: ~/Library/Preferences/Buttercup/desktop.config.json
  • Windows: $APPDATA/Buttercup/Config/desktop.config.json

Vault storage

Storage of connected vaults (not actual vault contents).

  • Linux: $XDG_DATA_HOME/Buttercup/vaults.json
  • Mac: ~/Library/Application\ Support/Buttercup/vaults.json
  • Windows: $LOCALAPPDATA/Buttercup/Data/vaults.json

Offline vault cache

Stored copies of vaults for offline use.

  • Linux: $(node -e "console.log(os.tmpdir())")/$(whoami)/Buttercup/vaults-offline.cache.json
  • Mac: $(node -e "console.log(os.tmpdir())")/Buttercup/vaults-offline.cache.json
  • Windows: $(node -e "console.log(os.tmpdir())")/Buttercup/vaults-offline.cache.json

Logs

Logs are written for all app sessions.

  • Linux: ~/.local/state/Buttercup-nodejs or $XDG_STATE_HOME/Buttercup-nodejs
  • Mac: ~/Library/Logs/Buttercup-nodejs
  • Windows: %LOCALAPPDATA%\Buttercup-nodejs\Log

Note that logs for portable Windows applications will be written to the same directory that the executable resides in.

Published Applications

You can view the current releases on the Buttercup Desktop releases page. Under each release are some assets - the various binaries and installers for each platform Buttercup supports. When installing or downloading, make sure to pick the right operating system and architecture for your machine.

Note that at this time, Buttercup only supports x64 (64 bit) machines.

Linux

We provide an AppImage build for Linux, because it is the most desirable format for us to release. AppImages support auto-updating, a crucial feature (we feel) for a security application. The other build types do not.

Important: Buttercup uses Electron to build its desktop application, which relies on AppImageLauncher for correct integration of AppImages into the host OS. Features like Google Drive authentication and correct .desktop icon use is only performed when integrating via AppImageLauncher. We highly recommend that you install it.

We won't be supporting formats like Snapcraft, deb or rpm images as they do not align with our requirements. Issues requesting these formats will be closed immediately. Discussion on topics like this should be started on other social channels.

Development

To begin developing features or bug-fixes for Buttercup Desktop, make sure that you first have Node v14 installed with a current version of NPM.

Once cloned, make sure to install all dependencies: npm install. After that, open 2 terminals and run npm run start:renderer in one and npm run start:main in the other.

Contributing

There are a number of ways you can contribute to Buttercup!

Features & Bug fixes

We welcome pull-requests and issues that serve to better Buttercup as a platform. Please remain respecful (this is free & open source after all) with your ideas and observations, and always consider opening an issue before starting on a substantial pull request.

Translations

Buttercup relies on the community for translating its interfaces into languages besides English. We use British English (en_GB) as the base language, and translate into all others that our contributors are kind enough to provide.

To add support for a language, make sure to add the translations for our vault UI first. After that, you can follow these instructions to add another language to the desktop application:

  • Copy the source/shared/i18n/translations/en.json file to the language code you're providing (eg. fi.json for Finnish).
  • Edit the source/shared/i18n/translations/index.ts file and:
    • Import the new JSON file: import fi from "./fi.json";.
    • Export the imported constant inside the default export already in that file.

Contributions

This project exists thanks to all the people who contribute. [Contribute].

We'd also like to thank:

Backers

Thank you to all our backers! πŸ™ [Become a backer]

Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]

Notes and Caveats

  • ΒΉ External services like Nextcloud and ownCloud must be configured correctly to support access via the web (using WebDAV). CORS must permit access from any source.
  • Β² Buttercup (including MadDev Oy) is not affiliated with any of the companies represented in screenshots or preview images.

More Repositories

1

buttercup-core

🎩 The mighty NodeJS password vault
TypeScript
461
star
2

buttercup-mobile

πŸ“± React-Native mobile application for Buttercup
TypeScript
391
star
3

buttercup-browser-extension

🌏 Buttercup browser extension
TypeScript
225
star
4

dossier

πŸ“ˆ Project overview and feature planning for Buttercup
47
star
5

buttercup-importer

🎣 3rd-party archive importer for Buttercup
JavaScript
41
star
6

rust-crypto-wasm

Rust
36
star
7

ui

React UI Components used in Buttercup products
JavaScript
31
star
8

react-formatted-input

An input component that abides by configurable formatting and constraint rules
JavaScript
29
star
9

buttercup-cli

Buttercup password manager for the command line
TypeScript
26
star
10

locust

Login form location & automation utility
TypeScript
20
star
11

buttercup-website

Buttercup's Homepage
JavaScript
12
star
12

buttercup-exporter

Export Buttercup vaults
JavaScript
9
star
13

google-oauth2-client

Google OAuth2 authentication client
TypeScript
9
star
14

secure-file-host

Secure filesystem host toolkit for Browser-Desktop datasource connection
JavaScript
8
star
15

buttercup-core-web

Web-based build of the Buttercup core library.
JavaScript
7
star
16

channel-queue

A queue management library with channels
JavaScript
6
star
17

dropbox-client

Dropbox client library
JavaScript
6
star
18

crypto

πŸ”’ Buttercup's native encryption tools written in Rust
Rust
6
star
19

buttercup-server

Archive server for Buttercup
JavaScript
6
star
20

buttercup-generator

Simple Javascript Password Generator for Buttercup Products
JavaScript
6
star
21

googledrive-client

Client for making basic Google Drive requests
TypeScript
6
star
22

credentials

Encrypted credentials handler for Buttercup
JavaScript
5
star
23

signing

Signing and verification tools for Buttercup archives
JavaScript
4
star
24

datasources

Buttercup archive datasources
JavaScript
4
star
25

file-interface

Client request library interface and explorer
TypeScript
4
star
26

buttercup-mobile-compat

Compiled library bundle for Buttercup's mobile platform
JavaScript
3
star
27

config

Configuration utility
JavaScript
3
star
28

desktop-v2-beta

Buttercup desktop application
TypeScript
3
star
29

app-env

Buttercup application environment configuration manager
JavaScript
3
star
30

bcupfs

Buttercup FileSystem for in-vault file storage and encryption
JavaScript
3
star
31

wasmcane

WASM Cryptography tools for iocane
Rust
2
star
32

account-rescue

Account reset/rescue framework for NodeJS
JavaScript
2
star
33

search

Vault searching components
JavaScript
2
star
34

iconographer

Icon queuing, fetching and caching library
JavaScript
2
star
35

archive-sharing

Share archive configurations between applications
JavaScript
1
star
36

download-count

JavaScript
1
star
37

fetch

Fetch adapter for cross-platform use.
JavaScript
1
star
38

daemon

Browser extension helper daemon
Rust
1
star
39

facades

Editing facades for Buttercup vaults and content
JavaScript
1
star
40

buttercup-native-bindings

OS-specific bindings and daemons.
JavaScript
1
star
41

attachments

Manage vault attachments and media
1
star
42

icon-proxy

Self-hosted website icon proxy for Buttercup
TypeScript
1
star