CLI tool
volcengine/SearchCLI avatar
volcengine/SearchCLI

SearchCLI: Volcengine AI Search Integration for Agent Workflows

Open CLI for integrating AI search, recommendation, and conversational retrieval into agent systems and business systems

1,188 stars36 forksTypeScriptApache-2.0

At a glance

What is it?
SearchCLI is Volcengine's open CLI for connecting AI search, recommendation, and conversational retrieval to agent systems. It wraps the Viking AI Search backend in an installable skills layer and a reviewable command interface.
Who is it for?
SearchCLI suits teams building on Volcengine's Viking AI Search who want an agent-compatible workflow layer with explicit review steps. Teams without Volcengine credentials, or those building on multi-cloud or self-hosted infrastructure, have no path to use it.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 10 days ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What SearchCLI Integrates and Who It Serves

SearchCLI is the command-line tool Volcengine ships for its Viking AI Search platform. It is built for three groups: developers integrating AI-powered search and recommendation into business applications on Volcengine, engineering teams constructing agent systems that need configurable retrieval pipelines, and operators who require an auditable path to configure and verify search behavior before production deployment.

The tool covers the complete workflow that a team would need to put Volcengine AI Search to work: onboarding structured catalog data, creating and configuring search applications, verifying runtime behavior, and iterating on retrieval quality. It is not a standalone search engine. It is an integration surface that maps to the Viking AI Search backend through a set of structured command groups: `vs dataset`, `vs app`, `vs data`, `vs search`, `vs recommend`, and `vs chat`, among others.

Viking Skills and the Agent Execution Model

SearchCLI's most distinctive feature is the Viking skills layer: installable workflow definitions that external agent systems can load and call directly. Running the following command installs six default skill bundles.

bash
npx skills add "[email protected]:volcengine/SearchCLI.git" -y -g

The six bundles are `vs-shared`, `vs-item-onboarding`, `vs-search`, `vs-search-tuning`, `vs-chat`, and `vs-recommend`. An agent system can invoke these workflows without writing custom integration code against the Volcengine API.

The execution model is built around reviewability. The README describes dry-runs, confirmation gates, and read-after-write verification as deliberate design choices. The `--json` flag is available across most command groups, making it straightforward to pipe structured output into downstream automation or monitoring. `vs doctor --json` provides a structured health check of the full configuration state.

This approach differs from raw SDK calls in a meaningful way. A raw API integration would call endpoints directly, with no standard review step before data mutations take effect. The skills-plus-CLI model inserts explicit checkpoints that a human or an orchestrating agent can inspect before proceeding.

Installing SearchCLI and Running the First Onboarding Flow

SearchCLI requires Node.js 20 or newer and `git`. The install path is a direct clone followed by a shell script.

bash
git clone [email protected]:volcengine/SearchCLI.git vs
cd vs
bash ./scripts/install.sh

Authentication requires Volcengine API credentials. If `VIKING_AK` and `VIKING_SK` are set in the current environment, the following two commands import and verify them.

bash
vs auth import-env
vs auth status --json

For interactive setup in a real terminal, `vs auth login` handles the flow. After authentication, `vs doctor --json` checks the full configuration state including connectivity.

Onboarding a JSONL catalog file into a new search application follows a sequence of discrete steps: upload the file to get a storage URL, infer a schema from the file content, create the dataset, write item data, create an application, and attach the dataset.

bash
vs dataset import-url --file-name items.jsonl
vs dataset infer-schema --tos-key <FileKey> --type multi_modal --theme e_commerce --language zh --name <dataset-name>
vs dataset infer-result --task-id <TaskID> --render-schema
vs dataset create --data @dataset-create.json
vs data write --dataset-id <DatasetId> --fields @items.jsonl
vs app create --name <app-name> --industry e_commerce --language zh
vs app attach-dataset --data @attach.json

Each step is explicit and auditable. The `vs dataset import-url` command returns a file URL for the upload, and `vs dataset infer-result --render-schema` displays the inferred schema before the dataset is created. If only a dataset is needed without an application, the sequence stops after `vs data write`.

Search Tuning and Quality Iteration with vs search tune

The `vs search tune` command group provides an automated pipeline for text-similarity evaluation and retrieval quality iteration. The workflow has four stages: query generation (`query-generate`), planning (`plan`), execution (`run`), and result inspection (`report`). Query generation and relevance judgment require an OpenAI-compatible LLM API.

The LLM API key is stored in a local secure credential store using `vs llm login`, keeping it out of plain config files. When `VIKING_LLM_BASE_URL`, `VIKING_LLM_API_KEY`, and `VIKING_LLM_MODEL` are already in the shell environment, `vs llm import-env` picks them up instead. Before running a full tuning pass, the following command verifies that the LLM connection is working.

bash
vs search tune llm-check --live --json

This check prevents silent failures in the evaluation loop, where a broken LLM connection would otherwise produce empty or incorrect relevance judgments without a clear error.

The README describes this pipeline as a first-version automated text-similarity evaluation. That framing indicates the methodology is not yet production-tested across all retrieval use cases. Teams running it on domains with unusual query distributions, or on catalogs with sparse text fields, should treat initial results as a starting point rather than a definitive quality signal.

Platform Dependency and What SearchCLI Cannot Do

SearchCLI is tightly coupled to Volcengine's Viking AI Search backend. There is no support for other cloud providers, self-hosted vector stores, or open-source search engines such as Elasticsearch or Weaviate. A team without a Volcengine account and AK/SK access to the AI Search service cannot use the tool in any mode. The README does not describe an offline mode, a local emulator, or a sandbox environment for development without live credentials.

The README does not document rollback procedures for dataset or application changes. Once data is written with `vs data write` or a dataset is attached to an application with `vs app attach-dataset`, the documentation provides no instructions for undoing those operations. Teams running the onboarding flow should test against a non-production application before writing to their live catalog.

The LLM integration required for search tuning adds a second external dependency. Teams without an OpenAI-compatible LLM API key cannot use the tuning pipeline and are limited to runtime verification commands.

Alternatives Without Cloud Lock-in

Teams building AI-powered search without committing to a single cloud provider typically combine a general-purpose search index such as Elasticsearch or OpenSearch with a separate vector search layer such as Qdrant or pgvector. Elasticsearch, for example, runs on-premises or on any cloud, supports both keyword and vector search natively in recent versions, and is not tied to any credential model. That architecture is more portable but requires substantially more custom integration code to wire together data pipelines, schema management, and tuning workflows.

SearchCLI trades that portability for a pre-built workflow layer, a unified command interface, and an installable skills system that lets agent frameworks call the same commands without bespoke integration work. For teams already committed to Volcengine infrastructure, that trade-off is straightforward. For teams that have not yet chosen a search backend, the Volcengine lock-in is the central question to resolve before evaluating SearchCLI further.

Maintenance Record and Licensing

The last push to the repository was on 2026-09-19. The package is versioned at 0.2.0 in `package.json`. The repository has no GitHub releases, so version history must be tracked through commits or the package version field directly. The README is available in twelve languages in addition to English, which reflects a broad intended user base across different regions.

The project is licensed under Apache-2.0. External contributors must complete a Contributor License Agreement before pull requests can be accepted. This is standard practice for corporate open-source projects hosted by cloud providers and affects how the community can contribute changes, including bug fixes. The security policy is documented in `SECURITY.md` in the repository root.

Editorial conclusion

SearchCLI suits teams building on Volcengine's Viking AI Search who want an agent-compatible workflow layer with explicit review steps. Teams without Volcengine credentials, or those building on multi-cloud or self-hosted infrastructure, have no path to use it. Before adopting, verify that AK/SK credentials with AI Search access are available and that `vs doctor --json` returns a clean result.

Frequently asked questions

What is the CLI command for SearchCLI?

The primary command is `vs`. After cloning the repository and running `./scripts/install.sh`, all operations follow the pattern `vs <command-group> <subcommand>`. For example, `vs auth status --json` checks credentials, `vs doctor --json` checks the full configuration, and `vs search run` executes a search query against a connected application.

What credentials does SearchCLI require to connect to Volcengine?

SearchCLI requires a Volcengine AK/SK pair with access to the AI Search service. They are provided interactively with `vs auth login` in a real terminal, or imported from the `VIKING_AK` and `VIKING_SK` environment variables using `vs auth import-env`. The optional LLM API key for search tuning is stored separately with `vs llm login`.

What are the six Viking skills installed with SearchCLI by default?

Running `npx skills add "[email protected]:volcengine/SearchCLI.git" -y -g` installs six skill bundles: `vs-shared`, `vs-item-onboarding`, `vs-search`, `vs-search-tuning`, `vs-chat`, and `vs-recommend`. These cover data onboarding, search execution, tuning, conversational retrieval, and recommendation workflows.

Official sources

  1. Issues
  2. License: Apache-2.0
  3. README
  4. volcengine/SearchCLI on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/volcengine-searchcli.svg)](https://hysenlabs.com/projects/volcengine-searchcli)