Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

tabby-agent

TabbyML363Apache-2.01.8.0TypeScript support: included

Generic client agent for Tabby AI coding assistant IDE extensions.

tabby, ai, autocomplete, code completion, languageserver

readme

Tabby Agent

The tabby-agent is an agent used for communication with the Tabby server. It is based on Node.js v18 and runs as a language server.

Breaking Changes: The tabby-agent will only support running as a language server since version 1.7.0.

The tabby-agent mainly supports the following features of LSP:

  • Completion (textDocument/completion)
  • Inline Completion (textDocument/inlineCompletion, since LSP v3.18.0)

For collecting more context to enhance the completion quality or providing more features like inline chat editing, the tabby-agent extends the protocol with some custom methods starting with tabby/*. These methods are used in Tabby-provided editor extensions.

Usage

Note: For VSCode, IntelliJ Platform IDEs, and Vim/NeoVim, it is recommended to use the Tabby-provided extensions, which run the Tabby Agent underlying.

The following guide is only for users who want to set up the tabby-agent as a language server manually.

Start the Language Server

npx tabby-agent --stdio

Connect the IDE to the tabby-agent

Since most text editors have their built-in LSP clients or popular LSP client plugins, you can easily connect to the tabby-agent from your editor. Here are some example configurations for popular editors.

Vim/Neovim (coc.nvim)

There are several Vim plugins that provide LSP support. One of them is coc.nvim. To use the tabby-agent as a language server, you can add the following code to your :CocConfig.

{
  "languageserver": {
    "tabby-agent": {
      "command": "npx",
      "args": ["tabby-agent", "--stdio"],
      "filetypes": ["*"]
    }
  }
}

Emacs

The package lsp-mode provides an LSP client for Emacs. You can add the following code to your Emacs configuration script to use the tabby-agent as a language server.

(with-eval-after-load 'lsp-mode
  (lsp-register-client
    (make-lsp-client  :new-connection (lsp-stdio-connection '("npx" "tabby-agent" "--stdio"))
                      ;; you can select languages to enable Tabby language server
                      :activation-fn (lsp-activate-on "typescript" "javascript" "toml")
                      :priority 1
                      :add-on? t
                      :server-id 'tabby-agent)))

Helix

Helix has built-in LSP support. To use the tabby-agent as a language server, you can add the following code to your languages.toml.

[language-server.tabby]
command = "npx"
args = ["tabby-agent", "--stdio"]

# Add Tabby as the second language server for your specific languages
[[languages]]
name = "typescript"
language-servers = ["typescript-language-server", "tabby"]

[[languages]]
name = "toml"
language-servers = ["taplo", "tabby"]

More Editors

You are welcome to contribute by adding example configurations for your favorite editor. Please submit a PR with your additions.

Configurations

Please refer to the configuration documentation for more details.

License

Copyright (c) 2023-2024 TabbyML, Inc.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

changelog

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, adheres to Semantic Versioning, and is generated by Changie.

v0.18.0 (2024-10-08)

Notice

  • The Chat Side Panel implementation has been redesigned in version 0.18, necessitating an extension version bump for compatibility with 0.18.0.
    • VSCode: >= 1.12.0
    • IntelliJ: >= 1.8.0

Features

  • User Groups Access Control: Server Administrators can now assign user groups to specific context providers to precisely control which contexts can be accessed by which user groups.

v0.17.0 (2024-09-10)

Notice

  • We've reworked the Web (a beta feature) context provider into the Developer Docs context provider. Previously added context in the Web tab has been cleared and needs to be manually migrated to Developer Docs.

Features

  • Extensive rework has been done in the answer engine search box.

    • Developer Docs / Web search is now triggered by @.
    • Repository Context is now selected using #.
  • Supports OCaml

v0.16.1 (2024-08-27)

Notice

  • Starting from this version, we are utilizing websockets for features that require streaming (e.g., Answer Engine and Chat Side Panel). If you are deploying tabby behind a reverse proxy, you may need to configure the proxy to support websockets.

Features

  • Discussion threads in the Answer Engine are now persisted, allowing users to share threads with others.

Fixed and Improvements

  • Fixed an issue where the llama-server subprocess was not being reused when reusing a model for Chat / Completion together (e.g., Codestral-22B) with the local model backend.
  • Updated llama.cpp to version b3571 to support the jina series embedding models.

v0.15.0 (2024-08-08)

Features

  • The search bar in the Code Browser has been reworked and integrated with file navigation functionality.
  • GraphQL syntax highlighting support in Code Browser.

Fixed and Improvements

  • For linked GitHub repositories, issues and PRs are now only returned when the repository is selected.
  • Fixed GitLab issues/MRs indexing - no longer panics if the description field is null.
  • When connecting to localhost model servers, proxy settings are now skipped.
  • Allow set code completion's max_input_length and max_output_tokens in config.toml

v0.14.0 (2024-07-23)

Features

  • Code search functionality is now available in the Code Browser tab. Users can search for code using regex patterns and filter by language, repository, and branch.
  • Initial experimental support for natural language to codebase conversation in Answer Engine.

Fixed and Improvements

  • Incremental issues / PRs indexing by checking updated_at.
  • Canonicalize git_url before performing a relevant code search. Previously, for git_urls with credentials, the canonicalized git_url was used in the index, but the query still used the raw git_url.
  • bump llama.cpp to b3370 - which fixes Qwen2 model series inference

v0.13.1 (2024-07-10)

Fixed and Improvements

  • Bump llama.cpp version to b3334, supporting Deepseek V2 series models.
  • Turn on fast attention for Qwen2-1.5B model to fix the quantization error.
  • Properly set number of GPU layers (to zero) when device is CPU.

    v0.13.0 (2024-06-28)

Features

  • Introduced a new Home page featuring the Answer Engine, which activates when the chat model is loaded.
  • Enhanced the Answer Engine's context by indexing issues and pull requests.
  • Supports web page crawling to further enrich the Answer Engine's context.
  • Enabled navigation through various git trees in the git browser.

Fixed and Improvements

  • Turn on sha256 checksum verification for model downloading.
  • Added an environment variable TABBY_HUGGINGFACE_HOST_OVERRIDE to override huggingface.co with compatible mirrors (e.g., hf-mirror.com) for model downloading.
  • Bumped llama.cpp version to b3166.
  • Improved logging for the llama.cpp backend.
  • Added support for triggering background jobs in the admin UI.
  • Enhanced logging for backend jobs in the admin UI.

v0.12.0 (2024-05-31)

Features

  • Support Gitlab SSO
  • Support connect with Self-Hosted Github / Gitlab
  • Repository Context is now utilizied in "Code Browser" as well

Fixed and Improvements

  • llama-server from llama.cpp is now distributed as an individual binary, allowing for more flexible configuration
  • HTTP API is out of experimental - you can connect tabby to models through HTTP API. Right now following APIs are supported:
    • llama.cpp
    • ollama
    • mistral / codestral
    • openai

v0.11.1 (2024-05-14)

Fixed and Improvements

  • Fixed display of files where the path contains special characters. (#2081)
  • Fixed non-admin users not being able to see the repository in Code Browser. (#2110)

v0.11.0 (05/10/2024)

Notice

  • The --webserver flag is now enabled by default in tabby serve. To turn off the webserver and only use OSS features, use the --no-webserver flag.
  • The /v1beta/chat/completions endpoint has been moved to /v1/chat/completions, while the old endpoint is still available for backward compatibility.

Features

  • Upgraded llama.cpp to version b2715.
  • Added support for integrating repositories from GitHub and GitLab using personal access tokens.
  • Introduced a new Activities page to view user activities.
  • Implemented incremental indexing for faster repository context updates.
  • Added storage usage statistics in the System page.
  • Included an Ask Tabby feature in the source code browser to provide in-context help from AI.

Fixes and Improvements

  • Changed the default model filename from q8_0.v2.gguf to model.gguf in MODEL_SPEC.md.
  • Excluded activities from deactivated users in reports.

v0.10.0 (04/22/2024)

Features

  • Introduced the --chat-device flag to specify the device used to run the chat model.
  • Added a "Reports" tab in the web interface, which provides team-wise statistics for Tabby IDE and Extensions usage (e.g., completions, acceptances).
  • Enabled the use of segmented models with the tabby download command.
  • Implemented the "Go to file" functionality in the Code Browser.

Fixes and Improvements

  • Fix worker unregisteration misfunctioning caused by unmatched address.
  • Accurate repository context filtering using fuzzy matching on git_url field.
  • Support the use of client-side context, including function/class declarations from LSP, and relevant snippets from local changed files.

v0.9.1 (03/19/2024)

Fixes and Improvements

  • Fix worker registration check against enterprise licenses.
  • Fix default value of disable_client_side_telemetry when --webserver is not used.

v0.9.0 (03/06/2024)

Features

  • Support for SMTP configuration in the user management system.
  • Support for SSO and team management as features in the Enterprise tier.
  • Fully managed repository indexing using --webserver, with job history logging available in the web interface.

v0.8.3 (02/06/2024)

Fixes and Improvements

v0.8.0 (02/02/2024)

Notice

  • Due to format changes, re-executing tabby scheduler --now is required to ensure that Code Browser functions properly.

Features

  • Introducing a preview release of the Source Code Browser, featuring visualization of code snippets utilized for code completion in RAG.
  • Added a Windows CPU binary distribution.
  • Added a Linux ROCm (AMD GPU) binary distribution.

Fixes and Improvements

  • Fixed an issue with cached permanent redirection in certain browsers (e.g., Chrome) when the --webserver flag is disabled.
  • Introduced the TABBY_MODEL_CACHE_ROOT environment variable to individually override the model cache directory.
  • The /v1beta/chat/completions API endpoint is now compatible with OpenAI's chat completion API.
  • Models from our official registry can now be referred to without the TabbyML prefix. Therefore, for the model TabbyML/CodeLlama-7B, you can simply refer to it as CodeLlama-7B everywhere.

v0.7.0 (12/15/2023)

Features

  • Tabby now includes built-in user management and secure access, ensuring that it is only accessible to your team.
  • The --webserver flag is a new addition to tabby serve that enables secure access to the tabby server. When this flag is on, IDE extensions will need to provide an authorization token to access the instance.
    • Some functionalities that are bound to the webserver (e.g. playground) will also require the --webserver flag.

Fixes and Improvements

v0.6.0 (11/27/2023)

Features

  • Add distribution support (running completion / chat model on different process / machine).
  • Add conversation history in chat playground.
  • Add /metrics endpoint for prometheus metrics collection.

Fixes and Improvements

  • Fix the slow repository indexing due to constraint memory arena in tantivy index writer.
  • Make --model optional, so users can create a chat only instance.
  • Add --parallelism to control the throughput and VRAM usage: https://github.com/TabbyML/tabby/pull/727

v0.5.5 (11/09/2023)

Fixes and Improvements

Notice

Features

  • Improved dashboard UI.

Fixes and Improvements

v0.4.0 (10/24/2023)

Features

Fixes and Improvements

v0.3.1 (10/21/2023)

Fixes and improvements

v0.3.0 (10/13/2023)

Features

Retrieval-Augmented Code Completion Enabled by Default

The currently supported languages are:

  • Rust
  • Python
  • JavaScript / JSX
  • TypeScript / TSX

A blog series detailing the technical aspects of Retrieval-Augmented Code Completion will be published soon. Stay tuned!

Fixes and Improvements

  • Fix Issue #511 by marking ggml models as optional.
  • Improve stop words handling by combining RegexSet into Regex for efficiency.

v0.2.2 (10/09/2023)

Fixes and improvements

  • Fix a critical issue that might cause request dead locking in ctranslate2 backend (when loading is heavy)

v0.2.1 (10/03/2023)

Features

Chat Model & Web Interface

We have introduced a new argument, --chat-model, which allows you to specify the model for the chat playground located at http://localhost:8080/playground

To utilize this feature, use the following command in the terminal:

tabby serve --device metal --model TabbyML/StarCoder-1B --chat-model TabbyML/Mistral-7B

ModelScope Model Registry

Mainland Chinese users have been facing challenges accessing Hugging Face due to various reasons. The Tabby team is actively working to address this issue by mirroring models to a hosting provider in mainland China called modelscope.cn.

## Download from the Modelscope registry
TABBY_REGISTRY=modelscope tabby download --model TabbyML/WizardCoder-1B

Fixes and improvements

  • Implemented more accurate UTF-8 incremental decoding in the GitHub pull request.
  • Fixed the stop words implementation by utilizing RegexSet to isolate the stop word group.
  • Improved model downloading logic; now Tabby will attempt to fetch the latest model version if there's a remote change, and the local cache key becomes stale.
  • set default num_replicas_per_device for ctranslate2 backend to increase parallelism.

No releases yet, this file will be updated when generating your first release.