{"id":13395378,"url":"https://github.com/gnebbia/kb","last_synced_at":"2025-05-14T13:07:16.478Z","repository":{"id":39726769,"uuid":"294965042","full_name":"gnebbia/kb","owner":"gnebbia","description":"A minimalist command line knowledge base manager","archived":false,"fork":false,"pushed_at":"2023-10-17T18:33:10.000Z","size":18309,"stargazers_count":3223,"open_issues_count":13,"forks_count":109,"subscribers_count":60,"default_branch":"main","last_synced_at":"2025-04-19T13:45:26.891Z","etag":null,"topics":["cheatsheets","cli","knowledge","knowledge-base","methodology","notebook","notes","notes-management-system","pentest-tool","procedures","rtfm"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gnebbia.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null},"funding":{"custom":["https://paypal.me/nebbione","https://xscode.com/gnebbia/kb"]}},"created_at":"2020-09-12T14:56:16.000Z","updated_at":"2025-04-18T14:45:18.000Z","dependencies_parsed_at":"2022-08-14T07:50:11.209Z","dependency_job_id":"40ea3c0d-78c1-4bd2-a2ec-8d673eea1157","html_url":"https://github.com/gnebbia/kb","commit_stats":{"total_commits":168,"total_committers":11,"mean_commits":"15.272727272727273","dds":"0.13095238095238093","last_synced_commit":"cd7f66337560dab37610aa414d57451bcb6630f8"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnebbia%2Fkb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnebbia%2Fkb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnebbia%2Fkb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnebbia%2Fkb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gnebbia","download_url":"https://codeload.github.com/gnebbia/kb/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254149958,"owners_count":22022851,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cheatsheets","cli","knowledge","knowledge-base","methodology","notebook","notes","notes-management-system","pentest-tool","procedures","rtfm"],"created_at":"2024-07-30T17:01:55.159Z","updated_at":"2025-05-14T13:07:11.463Z","avatar_url":"https://github.com/gnebbia.png","language":"Python","funding_links":["https://paypal.me/nebbione","https://xscode.com/gnebbia/kb"],"categories":["Python","cli","🛠️ Developer Tools","Python (1887)","HarmonyOS","知识管理_wiki知识库","Tools","\u003ca name=\"note-taking\"\u003e\u003c/a\u003eNote taking"],"sub_categories":["Windows Manager","资源传输下载","Python"],"readme":"\u003cp align=\"center\"\u003e\n    \u003cimg src=\"img/kb_logo.png?raw=true\" width=\"200\"/\u003e\n\u003c/p\u003e\n\n# kb. A minimalist knowledge base manager\n\n\n\n[![Build Status](https://travis-ci.com/gnebbia/kb.svg?branch=master)](https://travis-ci.com/gnebbia/kb)\n\nAuthor: gnc \u003cnebbionegiuseppe@gmail.com\u003e\n\nCopyright: © 2020, gnc\n\nDate: 2022-09-21\n\nVersion: 0.1.7\n\n\n## Table of Contents\n\n   * [Purpose](#purpose)\n   * [Installation](#installation)\n      * [Installation from AUR](#installation-from-aur)\n      * [Installation from pkgsrc](#installation-from-pkgsrc)\n      * [Installation with homebrew](#installation-with-homebrew)\n      * [Notes for Windows users](#notes-for-windows-users)\n   * [Docker](#docker)\n   * [Usage](#usage)\n      * [List artifacts](#list-artifacts)\n         * [List all artifacts contained in the kb knowledge base](#list-all-artifacts-contained-in-the-kb-knowledge-base)\n         * [List all artifacts containing the string \"zip\"](#list-all-artifacts-containing-the-string-zip)\n         * [List all artifacts belonging to the category \"cheatsheet\"](#list-all-artifacts-belonging-to-the-category-cheatsheet)\n         * [List all the artifacts having the tags \"web\" or \"pentest\"](#list-all-the-artifacts-having-the-tags-web-or-pentest)\n         * [List using \"verbose mode\"](#list-using-verbose-mode)\n      * [Add artifacts](#add-artifacts)\n         * [Add a file to the collection of artifacts](#add-a-file-to-the-collection-of-artifacts)\n         * [Add a file to the artifacts](#add-a-file-to-the-artifacts)\n         * [Add all files contained in a directory to kb](#add-all-files-contained-in-a-directory-to-kb)\n         * [Create a new artifact from scratch](#create-a-new-artifact-from-scratch)\n         * [Create a new artifact from the output of another program](#create-a-new-artifact-from-the-output-of-another-program)\n      * [Delete artifacts](#delete-artifacts)\n         * [Delete an artifact by ID](#delete-an-artifact-by-id)\n         * [Delete multiple artifacts by ID](#delete-multiple-artifacts-by-id)\n         * [Delete an artifact by name](#delete-an-artifact-by-name)\n      * [View artifacts](#view-artifacts)\n         * [View an artifact by id](#view-an-artifact-by-id)\n         * [View an artifact by name](#view-an-artifact-by-name)\n         * [View an artifact without colors](#view-an-artifact-without-colors)\n         * [View an artifact within a text-editor](#view-an-artifact-within-a-text-editor)\n      * [Edit artifacts](#edit-artifacts)\n         * [Edit an artifact by id](#edit-an-artifact-by-id)\n         * [Edit an artifact by name](#edit-an-artifact-by-name)\n      * [Grep through artifacts](#grep-through-artifacts)\n         * [Grep through the knowledge base](#grep-through-the-knowledge-base)\n         * [Grep (case-insensitive) through the knowledge base](#grep-case-insensitive-through-the-knowledge-base)\n         * [Grep in \"verbose mode\" through the knowledge base](#grep-in-verbose-mode-through-the-knowledge-base)\n         * [Grep through the knowledge base and show matching lines](#grep-through-the-knowledge-base-and-show-matching-lines)\n      * [Import/Export/Erase a knowledge base](#importexporterase-a-knowledge-base)\n         * [Export the current knowledge base](#export-the-current-knowledge-base)\n         * [Import a knowledge base](#import-a-knowledge-base)\n         * [Erase the entire knowledge base](#erase-the-entire-knowledge-base)\n      * [Manage Templates](#manage-templates)\n         * [List available templates](#list-available-templates)\n         * [Create a new template](#create-a-new-template)\n         * [Delete a template](#delete-a-template)\n         * [Edit a template](#edit-a-template)\n         * [Add a template](#add-a-template)\n         * [Change template for an artifact](#change-template-for-an-artifact)\n         * [Apply a template to all artifacts of a category](#apply-a-template-to-all-artifacts-of-a-category)\n         * [Apply a template to all artifacts having zip in their title](#apply-a-template-to-all-artifacts-having-zip-in-their-title)\n         * [Apply a template to all artifacts having specific properties](#apply-a-template-to-all-artifacts-having-specific-properties)\n      * [Integrating kb with other tools](#integrating-kb-with-other-tools)\n         * [kb and rofi](#kb-and-rofi)\n      * [Experimental](#experimental)\n         * [Synchronize kb with a remote git repository](#synchronize-kb-with-a-remote-git-repository)\n   * [UPGRADE](#upgrade)\n   * [FAQ](#faq)\n   * [DONATIONS](#donations)\n   * [COPYRIGHT](#copyright)\n\n\n## Purpose\n\nkb is a text-oriented minimalist command line knowledge base manager. kb\ncan be considered a quick note collection and access tool oriented toward\nsoftware developers, penetration testers, hackers, students or whoever\nhas to collect and organize notes in a clean way.  Although kb is mainly\ntargeted on text-based note collection, it supports non-text files as well\n(e.g., images, pdf, videos and others).\n\nThe project was born from the frustration of trying to find a good way\nto quickly access my notes, procedures, cheatsheets and lists (e.g.,\npayloads) but at the same time, keeping them organized.  This is\nparticularly useful for any kind of student. I use it in the context\nof penetration testing to organize pentesting procedures, cheatsheets,\npayloads, guides and notes.\n\nI found myself too frequently spending time trying to search for that\nparticular payload list quickly, or spending too much time trying to find\na specific guide/cheatsheet for a needed tool. kb tries to solve this\nproblem by providing you a quick and intuitive way to access knowledge.\n\nIn few words kb allows a user to quickly and efficiently:\n\n- collect items containing notes,guides,procedures,cheatsheets into\n  an organized knowledge base;\n- filter the knowledge base on different metadata: title, category,\n  tags and others;\n- visualize items within the knowledge base with (or without) syntax\n  highlighting;\n- grep through the knowledge base using regexes;\n- import/export an entire knowledge base;\n\nBasically, kb provides a clean text-based way to organize your knowledge.\n\n\n## Installation\n\n**You should have Python 3.6 or above installed.**\n\nTo install the most recent stable version of kb just type:\n```sh\npip install -U kb-manager\n```\n\nIf you want to install the bleeding-edge version of kb (that may have\nsome bugs) you should do:\n```sh\ngit clone https://github.com/gnebbia/kb\ncd kb\npip install -r requirements.txt\npython setup.py install\n\n# or with pip\npip install -U git+https://github.com/gnebbia/kb\n```\n\n**Tip** for GNU/Linux and MacOS users: For a better user experience,\nalso set the following kb bash aliases:\n```sh\ncat \u003c\u003cEOF \u003e ~/.kb_alias\nalias kbl=\"kb list\"\nalias kbe=\"kb edit\"\nalias kba=\"kb add\"\nalias kbv=\"kb view\"\nalias kbd=\"kb delete --id\"\nalias kbg=\"kb grep\"\nalias kbt=\"kb list --tags\"\nEOF\necho \"source ~/.kb_alias\" \u003e\u003e ~/.bashrc\nsource ~/.kb_alias\n```\n\nPlease remember to upgrade kb frequently by doing:\n```sh\npip install -U kb-manager\n```\n\n### Installation from AUR\n\nArch Linux users can install [kb](https://aur.archlinux.org/packages/kb) or [kb-git](https://aur.archlinux.org/packages/kb-git) with their favorite [AUR Helper](https://wiki.archlinux.org/index.php/AUR_helpers).\n\nStable:\n```sh\nyay -S kb\n```\n\nDev:\n```sh\nyay -S kb-git\n```\n\n### Installation from pkgsrc\n\nOf course it runs on NetBSD (and on pkgsrc). We can install it from pkgsrc source tree\n(databases/py-kb) or as a binary package using pkgin:\n\n```sh\npkgin in py38-kb\n```\n\nNote that at the moment the package is only available from -current repositories.\n\n\n### Installation with homebrew\n\nTo install using homebrew, use:\n```sh\nbrew tap gnebbia/kb https://github.com/gnebbia/kb.git\nbrew install gnebbia/kb/kb\n```\n\nTo upgrade with homebrew:\n```sh\nbrew update\nbrew upgrade gnebbia/kb/kb\n```\n\n\n### Notes for Windows users\n\nWindows users should keep in mind these things:\n- DO NOT USE notepad as %EDITOR%, kb is not compatible with notepad,\n  a reasonable alternative is notepad++;\n- %EDITOR% variable should ALWAYS be enclosed within double quotes;\n```sh\nEDITOR=C:\\Program Files\\Editor\\my cool editor.exe      -\u003e WRONG!\nEDITOR=\"C:\\Program Files\\Editor\\my cool editor.exe\"    -\u003e OK!\n```\n\nTo set the \"EDITOR\" Environment variable by using cmd.exe, just issue\nthe following commands, after having inserted the path to your desired\ntext editor:\n```sh\nset EDITOR=\"C:\\path\\to\\editor\\here.exe\"\nsetx EDITOR \"\\\"C:\\path\\to\\editor\\here.exe\\\"\"\n```\n\nTo set the \"EDITOR\" Environment variable by using Powershell, just issue\nthe following commands, after having inserted the path to your desired\ntext editor:\n```sh\n$env:EDITOR='\"C:\\path\\to\\editor\\here.exe\"'\n[System.Environment]::SetEnvironmentVariable('EDITOR','\"C:\\path\\to\\editor\\here.exe\"', [System.EnvironmentVariableTarget]::User)\n```\n\n#### Setting Aliases for cmd\n\nOpen a cmd.exe terminal with administrative rights and paste\nthe following commands:\n```sh\nreg add \"HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Command Processor\" /v \"AutoRun\" /t REG_EXPAND_SZ /d \"%USERPROFILE%\\autorun.cmd\"\n(\necho @echo off\necho doskey kbl=kb list $*\necho doskey kbe=kb edit $*\necho doskey kba=kb add $*\necho doskey kbv=kb view $*\necho doskey kbd=kb delete --id $*\necho doskey kbg=kb grep $*\necho doskey kbt=kb list --tags $*\n)\u003e %USERPROFILE%\\autorun.cmd\n```\n\n#### Setting Aliases for Powershell\n\nOpen a Powershell terminal and paste the following commands:\n```sh\n@'\nfunction kbl { kb list $args }\nfunction kbe { kb edit $args }\nfunction kba { kb add  $args }\nfunction kbv { kb view $args }\nfunction kbd { kb delete --id $args }\nfunction kbg { kb grep $args }\nfunction kbt { kb list --tags $args }\n'@ \u003e  $env:USERPROFILE\\Documents\\WindowsPowerShell\\profile.ps1\n```\n\n\n## Docker\n\nA docker setup has been included to help with development.\n\nTo install and start the project with docker:\n```sh\ndocker-compose up -d\ndocker-compose exec kb bash\n```\n\nThe container has the aliases included in its `.bashrc` so you can use\nkb in the running container as you would if you installed it on the\nhost directly.  The `./docker/data` directory on the host is bound to\n`/data` in the container, which is the image's working directly also.\nTo interact with the container, place (or symlink) the files on your host\ninto the `./docker/data` directory, which can then be seen and used in\nthe `/data` directory in the container.\n\n## Usage\n\nA quick demo of a typical scenario using kb:\n\n![](img/kb_general_demo.gif)\n\nA quick demo with kb aliases enabled:\n\n![](img/kb_general_demo_alias.gif)\n\nA quick demo for non-text documents:\n\n![](img/kb_non_text_demo.gif)\n\n### List artifacts\n\n#### List all artifacts contained in the kb knowledge base\n```sh\nkb list\n\n# or if aliases are used:\nkbl\n```\n![](img/kb_list_all.gif)\n\n#### List all artifacts containing the string \"zip\"\n```sh\nkb list zip\n\n# or if aliases are used:\nkbl zip\n```\n![](img/kb_list_title_zip.gif)\n\n#### List all artifacts belonging to the category \"cheatsheet\"\n```sh\nkb list --category cheatsheet\n# or\nkb list -c cheatsheet\n\n# or if aliases are used:\nkbl -c cheatsheet\n```\n![](img/kb_list_category.gif)\n\n#### List all the artifacts having the tags \"web\" or \"pentest\"\n```sh\nkb list --tags \"web;pentest\"\n\n# or if aliases are used:\nkbl --tags \"web;pentest\"\n```\n![](img/kb_list_tags.gif)\n\n#### List using \"verbose mode\"\n```sh\nkb list -v\n\n# or if aliases are used:\nkbl -v\n```\n![](img/kb_list_verbose.gif)\n\n\n### Add artifacts\n\n#### Add a file to the collection of artifacts\n```sh\nkb add ~/Notes/cheatsheets/pytest\n\n# or if aliases are used:\nkba ~/Notes/cheatsheets/pytest\n```\n![](img/kb_add.gif)\n\n#### Add a file to the artifacts\n```sh\nkb add ~/ssh_tunnels --title pentest_ssh --category \"procedure\" \\\n    --tags \"pentest;network\" --author \"gnc\" --status \"draft\"\n```\n![](img/kb_add_title.gif)\n\n#### Add all files contained in a directory to kb\n```sh\nkb add ~/Notes/cheatsheets/general/* --category \"cheatsheet\"\n```\n![](img/kb_add_directory.gif)\n\n#### Create a new artifact from scratch\n```sh\nkb add --title \"ftp\" --category \"notes\" --tags \"protocol;network\"\n# a text editor ($EDITOR) will be launched for editing\n```\n![](img/kb_add_from_scratch.gif)\n\n#### Create a new artifact from the output of another program\n```sh\nkb add --title \"my_network_scan\" --category \"scans\" --body \"$(nmap -T5 -p80 192.168.1.0/24)\"\n```\n\n### Delete artifacts\n\n#### Delete an artifact by ID\n```sh\nkb delete --id 2\n\n# or if aliases are used:\nkbd 2\n```\n\n#### Delete multiple artifacts by ID\n```sh\nkb delete --id 2 3 4\n\n# or if aliases are used:\nkbd 2 3 4\n```\n![](img/kb_delete_multiple.gif)\n\n#### Delete an artifact by name\n```sh\nkb delete --title zap --category cheatsheet\n```\n![](img/kb_delete_name.gif)\n\n\n### View artifacts\n\n#### View an artifact by id\n```sh\nkb view --id 3\n# or\nkb view -i 3\n# or \nkb view 3\n\n# or if aliases are used:\nkbv 3\n```\n![](img/kb_view.gif)\n\n#### View an artifact by name\n```sh\nkb view --title \"gobuster\"\n# or\nkb view -t \"gobuster\"\n# or\nkb view gobuster\n```\n![](img/kb_view_title.gif)\n\n#### View an artifact without colors\n```sh\nkb view -t dirb -n\n```\n![](img/kb_view_title_nocolor.gif)\n\n#### View an artifact within a text-editor\n```sh\nkb view -i 2 -e\n\n# or if aliases are used:\nkbv 2 -e\n```\n![](img/kb_view_in_editor.gif)\n\n\n### Edit artifacts\n\nEditing artifacts involves opening a text editor.\nHence, binary files cannot be edited by kb.\n\nThe editor can be set by the \"EDITOR\" environment\nvariable.\n\n#### Edit an artifact by id\n```sh\nkb edit --id 13\n# or\nkbe 13\n# or if aliases are used:\nkbe 13 \n```\n![](img/kb_edit.gif)\n\n#### Edit an artifact by name\n```sh\nkb edit --title \"git\" --category \"cheatsheet\"\n# or\nkb edit -t \"git\" -c \"cheatsheet\"\n# or if git is unique as artifact\nkb edit git\n```\n\n### Grep through artifacts\n\n#### Grep through the knowledge base\n```sh\nkb grep \"[bg]zip\"\n\n# or if aliases are used:\nkbg \"[bg]zip\"\n```\n![](img/kb_grep.gif)\n\n#### Grep (case-insensitive) through the knowledge base\n```sh\nkb grep -i \"[BG]ZIP\"\n```\n![](img/kb_grep_case_insensitive.gif)\n\n#### Grep in \"verbose mode\" through the knowledge base\n```sh\nkb grep -v \"[bg]zip\"\n```\n\n#### Grep through the knowledge base and show matching lines\n```sh\nkb grep -m \"[bg]zip\"\n```\n\n### Import/Export/Erase a knowledge base\n\n#### Export the current knowledge base\n\nTo export the entire knowledge base, do:\n```sh\nkb export\n```\nThis will generate a .kb.tar.gz archive that can\nbe later be imported by kb.\n![](img/kb_export.gif)\n\nIf you want to export only data (so that it can be used in other software):\n\n```sh\n kb export --only-data\n```\n\nThis will export a directory containing a subdirectory for each category\nand within these subdirectories we will have all the artifacts belonging\nto that specific category.\n\n#### Import a knowledge base\n```sh\nkb import archive.kb.tar.gz\n```\n**NOTE**: Importing a knowledge base erases all the previous\ndata. Basically it erases everything and imports the new knowledge base.\n![](img/kb_import.gif)\n\n#### Erase the entire knowledge base\n```sh\nkb erase\n```\n![](img/kb_erase.gif)\n\n\n### Manage Templates\n\nkb supports custom templates for the artifacts.\nA template is basically a file using the \"toml\" format,\nstructured in this way:\n```sh\nTITLES   = [ \"^#.*\", \"blue\",  ]\nWARNINGS = [ \"!.*\" , \"yellow\",]\nCOMMENTS = [ \";;.*\", \"green\", ]\n```\n\nWhere the first element of each list is a regex and the second element\nis a color.\n\nNote that by default an artifact is assigned with the 'default'\ntemplate, and this template can be changed too (look at \"Edit a template\"\nsubsection).\n\n\n#### List available templates\n\nTo list all available templates:\n```sh\nkb template list\n```\n\nTo list all the templates containing the string \"theory\":\n```sh\nkb template list \"theory\"\n```\n\n#### Create a new template\n\nCreate a new template called \"lisp-cheatsheets\", note that\nan example template will be put as example in the editor.\n```sh\nkb template new lisp-cheatsheets\n```\n\n#### Delete a template\n\nTo delete the template called \"lisp-cheatsheets\" just do:\n```sh\nkb template delete lisp-cheatsheets\n```\n\n#### Edit a template\n\nTo edit the template called \"listp-cheatsheets\" just do:\n```sh\nkb template edit lisp-cheatsheets\n```\n\n#### Add a template\n\nWe can also add a template from an already existing toml configuration file\nby just doing:\n```sh\nkb template add ~/path/to/myconfig.toml --title myconfig\n```\n\n#### Change template for an artifact\n\nWe can change the template for an existing artifact by ID by using the\nupdate command:\n```sh\nkb update --id 2 --template \"lisp-cheatsheets\"\n```\n\n#### Apply a template to all artifacts of a category\n\nWe can apply the template \"lisp-cheatsheets\" to all artifacts\nbelonging to the category \"lispcode\" by doing:\n```sh\nkb template apply \"lisp-cheatsheets\" --category \"lispcode\"\n```\n\n#### Apply a template to all artifacts having zip in their title\n\nWe can apply the template \"dark\" to all artifacts having in their title\nthe string \"zip\" (e.g., bzip, 7zip, zipper) by doing:\n```sh\nkb template apply \"dark\" --title \"zip\" --extended-match\n# or \nkb template apply \"dark\" --title \"zip\" -m\n```\nWe can always have our queries to \"contain\" the string by using\nthe `--extended-match` option when using `kb template apply`.\n\n#### Apply a template to all artifacts having specific properties\n\nWe can apply the template \"light\" to all artifacts of the category\n\"cheatsheet\" who have as author \"gnc\" and as status \"OK\" by doing:\n```sh\nkb template apply \"light\" --category \"cheatsheet\" --author \"gnc\" --status \"OK\"\n```\n\n### Integrating kb with other tools\n\nkb can be integrated with other tools.\n\n#### kb and rofi\n\nWe can integrate kb with rofi, a custom mode has been developed\naccessible in the \"misc\" directory within this repository.\n\nWe can launch rofi with this mode by doing:\n\n```sh\nrofi -show kb -modi kb:/path/to/rofi-kb-mode.sh\n```\n\n### Experimental\n\n#### Synchronize kb with a remote git repository\n\nSynchronization with a remote git repository is experimental at the moment.\nAnyway we can initialize our knowledge base to a created empty\ngithub/gitlab (other git service) repository by doing:\n```sh\nkb sync init\n```\n\nWe can then push our knowledge base to the remote git repository with:\n```sh\nkb sync push\n```\n\nWe can pull (e.g., from another machine) our knowledge base from the\nremote git repository with:\n```sh\nkb sync pull\n```\n\nWe can at any time view to what remote endpoint our knowledge is synchronizing\nto with:\n```sh\nkb sync info\n```\n\n\n## UPGRADE\n\nIf you want to upgrade kb to the most recent stable release do:\n```sh\npip install -U kb-manager\n```\n\nIf instead you want to update kb to the most recent release \n(that may be bugged), do:\n```sh\ngit clone https://github.com/gnebbia/kb \ncd kb\npip install --upgrade .\n```\n\n## FAQ\n\nQ) How do I solve the `AttributeError: module 'attr' has no attribute 's'` error?\n\nA) Uninstall attr and use attrs:\n```sh\npip uninstall attr\npip uninstall attrs\npip install attrs\npip install -U kb-manager\n```\n\n\n## DONATIONS\n\nI am an independent developer working on kb in my free time,\nif you like kb and would like to say thank you, buy me a beer!\n\n[![paypal](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)](https://paypal.me/nebbione)\n\n## COPYRIGHT\n\nCopyright 2020 Giuseppe Nebbione.\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program.  If not, see \u003chttp://www.gnu.org/licenses/\u003e.\n\n## Similar projects\n\n- [Command Line Interface Pages](https://github.com/command-line-interface-pages)\n- [TlDr](https://github.com/tldr-pages/tldr)\n- [Cheat](https://github.com/cheat/cheat)\n- [Cheatsheets](https://github.com/rstacruz/cheatsheets)\n- [Eg](https://github.com/srsudar/eg)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgnebbia%2Fkb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgnebbia%2Fkb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgnebbia%2Fkb/lists"}