Start locally
Run the command from the parent directory of your agent applications:--open opens http://127.0.0.1:8000 after the service is ready. Without it, Studio starts the service without opening a browser.
Volcengine credentials are used for models, cloud-resource queries, and AgentKit deployment from the workbench. In production, provide them through environment variables or a secret manager rather than project files.
To use BytePlus as the cloud provider, pass --provider byteplus and supply credentials via BYTEPLUS_ACCESS_KEY, BYTEPLUS_SECRET_KEY, and the optional BYTEPLUS_SESSION_TOKEN environment variables. Runtime listings default to the region in BYTEPLUS_REGION or ap-southeast-1. Without an explicit --provider, the CLI reads AGENTKIT_CLOUD_PROVIDER then CLOUD_PROVIDER to determine the cloud provider, falling back to Volcengine when neither is set.
Studio persistent storage
Studio capabilities such as video creation, automatic evaluation, intelligent-development project versions, and artifact persistence require persistent object storage to save reference assets, generated results, optimization snapshots, and conversation artifacts. Studio uses TOS as the persistent storage backend. When no dedicated publish storage is configured, skill publishing also reuses the persistent storage bucket; see Skill publish storage.Cloud deployment
Duringveadk studio deploy, a private TOS bucket named veadk-studio-<account ID> is automatically created or reused in the deployment region. The bucket name is derived from the cloud account ID, making repeated deployments idempotent. Administrators can also specify an existing bucket name with the VEADK_STUDIO_TOS_BUCKET environment variable; when specified, the bucket must already exist in the deployment region, otherwise the deployment fails.
A bucket created in one region cannot be recreated under the same name in another region. When switching deployment regions, Studio reuses the bucket if it already exists in the target region; otherwise you must explicitly specify a bucket available in that region.
Local startup
When starting locally, configure persistent storage with the following environment variables:VEADK_VIDEO_TOS_* and DATABASE_TOS_* environment variables remain as a temporary compatibility fallback: when both VEADK_STUDIO_TOS_BUCKET and VEADK_STUDIO_TOS_REGION are unset, Studio attempts to read the bucket, region, and endpoint from the legacy variables. New deployments only need the two VEADK_STUDIO_TOS_* variables.tos-<region>.volces.com) on first access. If the probe encounters a transport-level network error, Studio automatically switches to the corresponding intranet endpoint (tos-<region>.ivolces.com) and continues using the selected endpoint for subsequent requests. Authentication failures, permission errors, and other non-network TOS service errors do not trigger fallback. Browser-facing signed URLs always use the public endpoint to ensure external accessibility. BytePlus and custom endpoints are unaffected by this mechanism.veadk-studio/v1/users/<encoded-user-ID>/<namespace>/<scope>/<resource-ID>/. Video reference assets use the video/<asset-role>/<asset-ID>/ namespace and store file content and metadata.json below it.
Optimization snapshots produced by automatic evaluation are stored at veadk-studio/v1/evaluation-optimizations/<Runtime ID>/<app name>.json, with the latest snapshot retained for each Runtime application.
Intelligent-development project versions are stored at veadk-studio/v1/users/<encoded-user-ID>/intelligent-development/projects/<project-ID>/versions/<version-ID>/. Each version contains an immutable source ZIP, validation report, and commit marker. Viewing, downloading, and deploying a saved version do not depend on the original Sandbox; the project summary is only an index.
Customize branding
Use--site-title to set a system name of up to 16 characters and --site-logo to provide a local image or HTTP(S) image URL. The logo appears in the sidebar, login page, and browser favicon. The browser tab title changes dynamically with the active view: the new-conversation home shows only the system name; an open conversation shows the conversation name; other pages such as Automation, System info, Create agent, Resource library, and Search show the form “System name - Page name”. Omitting --site-title uses the default AgentKit Studio name.
VEADK_SITE_TITLE and VEADK_SITE_LOGO. The deployment command accepts the same options; remote images are downloaded and bundled so that the deployed site does not depend on the original URL.
Interface language
Studio supports two interface languages: Simplified Chinese (zh-CN) and English (en-US). On first visit, Studio automatically detects and selects the interface language that matches your browser language settings; when no supported language matches, it defaults to English.
Your language choice is persisted in browser local storage, so subsequent visits keep your last selected language. You can also switch the interface language at any time from the Language submenu in the sidebar account menu. The change takes effect immediately without reloading the page.
Create an agent
- On the Agents page, click Create agent and choose Create from scratch to enter custom configuration, select “Intelligent development” to describe a goal and let Codex build it, choose “Add and deploy from a code package” to upload an existing project, or choose “Migrate an existing project” to migrate LangChain, Dify, or other framework projects to VeADK.
- Configure the model, instruction, tools, memory, and knowledge base, and add skills from Skill Hub, a local upload, or an AgentKit SkillSpace. Multi-agent projects can also use sequential, parallel, loop, or A2A nodes, and the canvas lets you inspect and arrange the agent topology.
- Review the generated files and run them in a restricted temporary process; download a ZIP if you need to work offline.
- In the Optimization step, optionally enable Harness Sidecar optimizations for the agent; this step is optional and no Sidecar starts when nothing is selected.
- In the Environment step, select a pre-built runtime environment image, or use the default AgentKit runtime environment; this step is optional.
- Select AgentKit deployment and monitor the build-image, deploy, and publish stages from the workspace. After deployment, the agent appears as published in the workspace and can be updated on the same Runtime.
CreateAgentToolset dynamic agent delegation toolset, allowing the main agent to collect resources, create sub-agents, and delegate execution at runtime. In quick mode the generated requirements.txt pins veadk-python 1.1.11 and includes a compatibility module to ensure dynamic delegation works on the current deployed version. When deploying to AgentKit, if the Runtime uses a Studio-generated default service role, Studio automatically attaches the AgentKitFullAccess policy to that role so sub-agents can access AgentKit resources; custom service roles are not modified and must be configured with the required permissions manually.Model selection
When configuring an LLM agent, you can browse the Ark models activated under the current account in the model selector and choose a target model. The model list is fetched by the Studio server from Ark and includes only LLM and VLM models that support agent calls, showing the model name, display name, vendor, and activation status. Deactivated models are excluded. The list is cached server-side; use the refresh button to retrieve the latest status. The model source falls into one of the following categories, determined automatically by whether the model API base URL is the official Ark endpoint for the current cloud provider:MODEL_AGENT_API_KEY_NAME; if no match is found, the first key in the list is used. You can also manually select a specific Ark API Key in the deployment configuration area: the selected key’s raw value is resolved by the Studio server and injected into the runtime environment without ever being sent to the browser. When the list is empty, create an API Key in the Ark console first.
When using a custom model endpoint, the publish page displays a “Custom model credentials” group in the environment-variables area, providing a required API Key input for each agent that uses a custom endpoint; model provider and model API base URL are also available as optional inputs. The credentials are used only for that publish and are not saved in the draft. Generated project code reads the configuration from the following environment variables, and .env.example lists them as placeholders:
Model fallback configuration
When configuring an LLM agent, you can add ordered fallback models for each agent. When the primary model is unavailable, VeADK tries the fallback models in order. Fallback models fall into two categories:- Same-provider fallbacks: Specify only the model name; the fallback automatically reuses the primary model’s provider, API base, and API key. The generated project code implements fallbacks through the
model_namelist. - Cross-provider fallbacks: Specify a separate model provider, API base, and API key for each fallback endpoint. The generated project code uses
ModelFallbackEndpointobjects passed via themodel_fallbacksparameter.
FALLBACK_MODEL_<agent_name>_<index>_API_KEY, listed as a placeholder in .env.example:
Configure deployment settings
In the deployment configuration area, select the region and network mode, and optionally set Runtime instance counts. Instance settings appear only when creating a new Runtime; they are hidden when updating an existing Runtime. When updating an existing Runtime, the region and network mode are read from the existing Runtime and remain unchanged.local (in-memory) or unconfigured, Studio defaults the maximum instance count to 1 and warns that multiple instances, process restarts, or rolling updates can cause session loss; a database-backed short-term memory store is recommended. The deployment progress shows a corresponding stage: when the instance range differs from the default 1–5, an “Update instance configuration” stage is added after Runtime creation.
When creating a new Runtime, Studio auto-generates a Runtime name from the root agent name (composed of letters, digits, underscores, and hyphens, 4–64 characters), keeping agent and Runtime naming consistent and predictable. The Runtime name can be edited manually; Studio validates the name format and checks for conflicts with existing Runtimes in the selected region before deployment. If the name is already in use, deployment fails with a prompt to choose a different name. The deployment result returns both the agent name and the Runtime name.
When creating a new Runtime, access authentication defaults to API Key. To use user identity verification instead, select a VeIdentity user pool in the deployment configuration area. The Studio server loads the user pools visible to the current account with its own Volcengine credentials, so the browser never receives them. The picker marks the user pool used for the current Studio login: selecting it lets Studio forward the validated login JWT to the Runtime, so callers do not need to obtain a token separately; selecting another user pool means callers must use a JWT issued by that pool to access the Runtime. The user-pool region is determined by the VEIDENTITY_REGION environment variable. In Volcengine mode, when VEIDENTITY_REGION is not set it falls back to the REGION environment variable and then the default cn-beijing; BytePlus mode is fixed to ap-southeast-1.
Configure build resources
When deploying to AgentKit, Studio uses the following cloud resources for image building and publishing:- TOS bucket: Stores the source code package for the cloud build service to fetch.
- Container Registry (CR): Stores the built image, comprising an instance, namespace, and repository.
- CodePipeline: Manages the cloud build pipeline, comprising a Workspace and a Pipeline.
Configure agent optimizations
Custom creation adds an Optimization step between Debug and Environment for enabling Harness Sidecar optimizations. Harness Sidecar runs agent-enhancement behavior in a separate managed runtime; the application process itself does not load the related plugin implementations.- When Context governance, Context and result compression, Answer verification and repair, or Goal-task control is selected and a Volcengine Ark model is used, model-gateway settings are required. Studio fills in the model provider, model API base, and model name automatically; the Ark API Key is injected from the selected API Key and does not need to be entered manually.
- When MCP-resilience governance is selected, Studio injects MCP configuration automatically from the HTTP MCP tools configured earlier in the Add MCP Tool step—no manual entry is needed. At least one MCP tool using HTTP transport must be configured with a valid service URL; a Bearer Token is only required when the service requires authentication, and each HTTP MCP tool may use its own credential. If these conditions are not met, the Publish step directs you back to the Add MCP Tool step to complete the configuration before republishing. MCP tools using stdio transport are not supported for MCP-resilience governance.
Configure the cloud environment
The custom-creation lifecycle follows five steps: Architecture, Debug, Optimization, Environment, and Publish. The Environment step sits between Optimization and Publish and lets you select a pre-built runtime environment image. The step is optional: choosing “Default environment” uses the default AgentKit image build and the generated project contains noDockerfile.
In the Environment step, select a successfully built runtime environment from the dropdown. The dropdown shows the environment name, operating system, Python version, and build status (preparing, queued, building, scanning, available, or failed); only environments with “available” build status are selectable. Once selected, the environment image is used as the base image for the agent image build during deployment, and the chosen environment version is pinned to that deployment. When no environment is selected, the default AgentKit runtime environment is used.
Workspaces
The Studio sidebar provides a “Workspaces” entry for organizing reusable runtime environments into workspaces by purpose. A workspace can contain multiple environments, and the same environment can belong to multiple workspaces; deleting a workspace only removes the association and does not delete the environments. Agent creation and deployment still directly select a specific environment and its build version — workspaces only organize and manage environments. The workspaces page provides “Workspaces” and “Environments” tabs that you can switch between. The workspaces list shows each workspace’s name, description, the number of environments it contains, and the number of available environments. Click “Manage” to open the workspace detail, where you can add or remove environments. Each environment card also shows the number of workspaces that reference it.Manage runtime environments
In the “Environments” tab of the Workspaces page, you can create, manage, and build reusable runtime environments. A runtime environment is a configuration definition containing an operating system, Python version, command-line tools, skills, and a Dockerfile. After building, it produces a container image that can be selected as the base image when deploying an agent. Environment definitions, generated Dockerfiles, build versions, log metadata, and image references are stored in the Studio-private TOS bucket.Create a runtime environment
After clicking “Create environment” in the Environments tab, choose a creation method:Custom configuration
After selecting “Custom configuration”, fill in the following settings:Base environment types
When creating an environment, you can choose from the following base environments:aio.sandbox, Studio automatically detects it as an AIO Sandbox base environment; when it contains /codexenv:, Studio automatically detects it as a Codex Sandbox base environment./opt/gem/run.sh entrypoint on port 8080) after the image build and injects model-related environment variables. Tool creation runs asynchronously; the environment version only becomes fully available after the Tool is ready. While the Tool is not ready, the environment version cannot be mounted to a conversation for command execution.
When the Codex Sandbox base environment is selected, Studio also automatically creates an associated AgentKit Sandbox Tool and injects model-related environment variables after the image build. Once the Tool is ready, the environment version can be mounted to conversations, and the agent delegates complete tasks to the Codex App Server via the delegate_to_codex_sandbox tool instead of executing commands through the Sandbox Shell directly.
Each environment version exposes a read-only Manifest, accessible via the GET /web/environments/{environmentId}/builds/{versionId}/manifest endpoint. The Manifest includes the image reference, base environment, operating system, Python version, pre-installed packages, capabilities, and the associated Sandbox Tool status. The environment card can open the same version-bound Manifest as YAML for inspection and copying.
Upload Dockerfile
After selecting “Upload Dockerfile”, drag a file onto the upload area or click it to choose a local Dockerfile file. After uploading, you can continue editing the content in the preview area. The uploaded Dockerfile must satisfy the following requirements:Build from Git repository
After selecting “Build from Git repository”, provide a public HTTPS Git repository URL and an optional branch, tag, or commit. Studio inspects the repository and automatically discovers files matchingDockerfile, Dockerfile.*, and *.Dockerfile naming patterns. After candidates are found, select one as the build entry; if no matching files exist, the environment cannot be created.
Studio saves the following information for the build:
Bind existing CR image
Select “Bind existing CR image” when the image has already been built by your own pipeline and pushed to Container Registry. Select the region, Registry instance, Namespace, and Repository in turn, then enter the Tag or Digest. Studio uses the image directly without starting a CodePipeline build. Studio saves the following information:Build environment images
After creating or saving an environment, click “Build” to start an asynchronous image build. Studio uploads the build context to the TOS bucket, runs the build pipeline through CodePipeline, and pushes the resulting image to Container Registry. The build proceeds through preparing, queued, building, and scanning phases, with a final status of “available” or “failed.” Environments built from a Git repository also build images via CodePipeline and push the result; the build version records the checked-out commit SHA. Environments that bind an existing CR image do not require a build — an available version is created at creation time. After the build completes, the environment list shows the latest version’s build status and image reference. You can view build steps, progress, and logs on the environment detail page. Logs are syntax-highlighted and auto-scroll to the bottom by default — scrolling up pauses auto-follow, and scrolling back to the bottom resumes it. When the build fails, the end of the log shows the error message to help locate the failure cause. When the AIO Sandbox or Codex Sandbox base environment is selected, an additional “Create AgentKit Sandbox Tool” build step runs after the image build completes. This step asynchronously creates the associated private Sandbox Tool and injects model-related environment variables; the environment version only becomes fully available after the Tool is ready. While the Tool is being created, the environment status shows “building”; it changes to “available” once the Tool is ready, or “failed” if Tool creation fails. The environment version cannot be mounted to a conversation for command execution until the Tool is ready.agentkit-cli-<account-id> instance and creates the runtime-environments/base-images repository inside it.Environment build resources
When deploying Studio, you can specify existing environment build resources using the following flags:--environment-cr-repository must use the registry/namespace/repository format; each segment must not contain spaces or ./... When omitted, Studio creates or reuses managed resources. These settings are not read from environment variables and take effect only in the deploy command. After deployment, the System Information page shows the resolved CodePipeline and Container Registry names, source, and console links; these values are resource identifiers and do not contain credentials.
Environment share codes
Environment configurations can be exported as share codes and imported into another Studio user’s environment list, enabling cross-instance sharing of environment configurations. Share codes are prefixed withakenv://v1/ and are self-contained, versioned data with no server-side sharing records.
Exporting share codes
In the environment list, each environment card provides an entry to export a share code. The exported share code contains the environment name, description, system, language, components, Dockerfile, Git/CR source, and portable skill configuration. Local skill files are written directly into the share code. If the source environment has an available version, the share code also carries its image, Sandbox Tool, and version-level skill snapshot, so that importing into a Studio on the same cloud provider makes it available for mounting directly. When the browser blocks automatic copying, the share dialog retains the full share code for manual copying. The environment list detects when the clipboard starts withakenv:// and prompts to import.
Importing share codes
Click “Import environment” in the environment list and paste one or more share codes. Share codes can be separated by English commas, Chinese commas, or newlines, with a maximum of 20 per batch. Studio first inspects and lists the validity of each share code, then imports them one by one. Duplicate share codes are automatically ignored. A failure on one entry does not roll back environments that were already added successfully. The import behavior varies depending on the share code content:Intelligent development
Intelligent development is a goal-driven creation flow: on Add Agent, select “Intelligent development” and describe the problem your agent should solve in natural language. Codex in the sandbox handles each request directly within a single turn — for questions, clarifications, or explanations that do not require project changes, it answers naturally; for development requests, it builds the project, debugs it, and performs a temporary cloud validation, producing a deployable source artifact.SANDBOX_DEV or --sandbox-dev-tool-id) with model credentials configured on that Tool (a model ID, an API Key, and a model API base URL pointing to the current cloud’s official Ark endpoint). When the Tool is not configured, the entry shows “Unavailable.” When the Tool is configured but model credentials are missing or do not match, the entry is also unavailable and prompts you to redeploy Studio. veadk studio deploy creates this Tool and completes the model configuration automatically by default; for local startup you can specify an existing Tool ID manually.Workflow
Describe the goal
Build and validate
Inspect and deploy the artifact
Deploy validated source
When deploying from intelligent development, the source is materialized server-side from the validated delivery artifact or a saved project version; browser files cannot replace it and only a new Runtime can be created. The deployment page shows the Runtime name (editable; must be 4–64 characters containing only letters, digits, underscores, and hyphens), the entry-point file, artifact checksums, and supports selecting the deployment region and network mode. The Runtime name is taken from the agent name in the delivery artifact, and resource tags record the source as intelligent development.Session management
Intelligent-development sessions run in the current browser session and do not appear in the sidebar history list. An in-progress session shows a “Building” status; you can switch to other pages and return to resume the current session. When you try to navigate away during a build, Studio prompts that leaving will stop the current build, but the session is preserved. When resuming a session, the conversation history shows only user messages and assistant responses; internal intent-gate and task-scheduling steps are not displayed.Project version library
Each completed build or optimization is saved as an immutable project version in the private Studio TOS bucket. Saved versions do not depend on the original Sandbox environment — viewing, downloading, and deploying remain available even after the Sandbox session expires. Versions are grouped by project and listed by creation time.VEADK_STUDIO_TOS_BUCKET and VEADK_STUDIO_TOS_REGION). When persistent storage is not configured, build artifacts are only available within the current Sandbox session and are not saved as project versions. See Studio persistent storage for configuration.Version comparison
Select any two versions of the same project in the project version library to compare file differences between them. The comparison is presented in a side-by-side diff view, showing additions, deletions, and modifications per file. Version comparison does not produce additional stored artifacts.Add and deploy from a code package
Code-package deployment is an independent creation flow: on Add Agent, select “Add and deploy from a code package” and upload an existing Agent project archive. You can then inspect or edit its files in Studio and deploy directly to AgentKit without configuring the model, tools, or skills individually. It suits getting an externally authored VeADK project online quickly, or re-deploying an existing project after small adjustments.Upload the code package
.zip archive. The archive can be up to 50 MB and contain no more than 800 files after extraction. The entry point defaults to app.py at the root; if the root contains an agentkit.yaml that declares common.entry_point, the declared file is used as the entry point instead.Review or edit files
user, and at most 64 characters). Use “View files” to preview or edit file contents in the code browser; re-upload the archive to replace the contents.Configure deployment
Deploy to AgentKit
__MACOSX directories and .DS_Store files, and when all files share a single top-level directory it strips that wrapping directory before validating the entry. Entries with absolute paths, empty segments, ., .. segments, or null bytes are rejected, and duplicate file paths raise an error. The entry point file must be in the root after the wrapping directory is removed.Migrate an existing project
Existing-project migration is an independent creation flow: on Add Agent, select “Migrate an existing project” and upload an archive of an existing agent project. Studio automatically analyzes the project framework and entry point in a Dev Sandbox and generates a deployable VeADK project. The following frameworks are supported:Upload the project archive
.zip archive of up to 20 MiB (20 MiB maximum after extraction).Automatic analysis
Confirm migration parameters
Run migration
ak migrate for direct conversion; Dify and Any run ak migrate --execution in-place with Codex assistance in the same Dev Sandbox Session. All state, logs, and artifacts remain within the Session.Preview, download, or deploy
MODEL_AGENT_API_BASE, MODEL_AGENT_NAME, and MODEL_NAME) to the current cloud provider, ensuring the migrated project uses the correct model endpoint and model name in the target cloud environment.common.entry_point in the migration artifact’s agentkit.yaml as the startup command. If common.entry_point is not declared, Studio falls back to the startup entry point returned by the migration tool. This also applies when deploying saved migration versions.VEADK_STUDIO_TOS_BUCKET and VEADK_STUDIO_TOS_REGION); when not configured, migration artifacts are only available within the Session TTL. See Studio persistent storage for configuration.Migration effect evaluation
Migration effect evaluation is an optional step in existing-project migration. When enabled, Studio automatically deploys a temporary Runtime, executes evaluation cases against the migrated agent, scores the behavioral differences between the original and migrated agents, and generates a viewable and downloadable HTML report. Evaluation is off by default and does not affect the migration flow when disabled. Evaluation failure or cancellation does not hide or roll back the migration artifact; saved source versions remain fully usable.VEADK_STUDIO_TOS_BUCKET and VEADK_STUDIO_TOS_REGION). When not configured, the evaluation toggle shows “Migration effect evaluation is unavailable in this environment” while migration itself is unaffected. See Studio persistent storage for configuration.Enabling evaluation
When creating a migration task, the “Migration effect evaluation” toggle in the migration workspace is off by default. When enabled, the workspace shows two tabs — “Migration” and “Evaluation” — letting you configure evaluation cases while migration is in progress. Enabling evaluation extends the Dev Sandbox Session TTL from 1 hour to 2 hours to accommodate temporary Runtime deployment, case execution, and evaluation analysis.Configuring evaluation cases
Before migration completes, fill in evaluation cases on the “Evaluation” tab. Cases are locked once upload starts and cannot be modified. Two input methods are supported:Evaluation dimensions
Evaluation dimensions determine which aspects of behavioral consistency are checked in the report. Two modes are supported:Evaluation workflow
Once the migration artifact is deployable, evaluation runs automatically in the following order:- Prepare evaluation environment: Validate the migration artifact and evaluation cases.
- Provide environment variables (only when required): If the migration artifact declares required or optional environment variables, Studio pauses evaluation and prompts for input. Submitting the variables resumes evaluation.
- Deploy temporary Runtime: Deploy a temporary Runtime from the migration artifact to execute evaluation cases.
- Execute cases: Send each evaluation case to the temporary Runtime and capture output and raw Runtime observations.
- Run evaluation analysis: In a single resumable Codex thread, score the behavioral differences between the original and migrated agents per dimension, generating evidence and gap descriptions.
- Generate evaluation report: Aggregate per-dimension scores, evidence coverage, and execution results into an HTML report.
Evaluation report
After evaluation completes, the “Evaluation” tab shows a report summary including overall fidelity score (0–100), evidence coverage, execution success rate, N/A count, lowest-scoring cases, execution issues, and critical evidence. The report does not issue a pass/fail verdict; it presents quantitative scores and difference evidence. Click “View report” to preview the full HTML report in a side drawer, with download support. The report and the locked evaluation dataset are stored as immutable assets in the private Studio TOS bucket, accessible only to the task owner.Evaluation states
The migration task list and the “Evaluation” tab display the current evaluation state:Add skills
When creating an agent, add skills from the following sources. Skill files are written to the generated project’sskills/ directory:
- Skill Hub: Search the public Volcengine skill repository by keyword and add a skill.
- Local upload: Drag in a folder or select a ZIP archive. Each skill directory must contain
SKILL.md. Studio checks file presence, count, size, and path safety, and automatically ignores macOS metadata files inside__MACOSXdirectories; ADK performs full frontmatter and skill-format validation at load time. The generated skill directory uses thenamefield fromSKILL.mdor the uploaded directory name. - AgentKit SkillSpace: Browse skill spaces visible to the current account, then select a skill and version.
VOLCENGINE_ACCESS_KEY and VOLCENGINE_SECRET_KEY. A VeFaaS deployment uses temporary credentials from its bound IAM role. When SSO login is enabled, you must be signed in to Studio before browsing skill spaces.
The skill-space list returns every space visible to the current account across all regions by default. After you select a space, Studio loads its skills in the space’s region. Use the refresh button to reload a list.
SKILL.md name and description format or require the directory name to match name at import time. If a skill fails at runtime, check that the SKILL.md frontmatter meets ADK skill requirements.SKILL.md, scripts, references, and assets when the cloud version provides a complete package; otherwise it uses SKILL.md only. There is no fixed limit on the number of skills added to one agent.Generate an agent draft from a requirement
The custom-creation build canvas offers a “smart generate” entry above the canvas. Describe your goal in one sentence, for example “Create a short-video production agent that performs trend research, script writing, asset production, video generation, and quality review in order,” and select “smart generate”. Studio calls thedoubao-seed-2-0-lite-260428 model to produce a validated, complete agent-configuration draft that is loaded onto the canvas. Generation consumes tokens.
Structure of the generated draft
The generated configuration follows these rules:- The root agent is preferably an LLM agent so it can reason and respond directly to the user. An orchestrator is used as the root only when strict workflow control is essential to the requested result, not merely because the requirement involves multiple tasks or steps.
- Orchestrator agents (sequential, parallel, loop) only schedule sub-agents and do not carry a model, instruction, tools, memory, knowledge base, or tracing configuration.
- LLM agents are always leaf nodes. Their name, description, instruction, model, and tools are populated automatically, and they cannot contain sub-agents.
- Every generated LLM agent uses the
doubao-seed-2-1-pro-260628model. - The iteration limit for orchestrator agents defaults to
3; loop agents use the limit stated in the requirement. - All agent and custom-tool names are globally unique snake_case Python identifiers.
- Tools are enabled only when the requirement needs them; review-only agents are not given media-generation tools.
- Smart generation does not configure memory, knowledge base, or tracing. These capabilities are always disabled in the generated draft, with their backends left at the defaults (memory uses
local; the knowledge base usesviking). To enable them, configure them manually on the canvas after generation.
web_search and parallel_web_search are not shown in the built-in tool list for custom creation or smart generation; Volcengine mode is unaffected.Unresolved items
The result lists real resources or identifiers that still need to be provided (such as instance IDs, URLs, credentials, MCP servers, or skill IDs). Studio does not invent them; after generation, supply the actual resources on the canvas as needed.Steps
Enter the requirement
Generate the configuration
Review unresolved items
Adjust and test
Permissions and failure handling
When role-based access control is enabled, smart generation is available only todeveloper and admin users.
On failure, Studio shows an error dialog. Common cases include:
Add a remote agent
Remote agents are discovered and invoked through an AgentKit agent center. Use them to connect specialized capabilities that have already been published to a center. A remote agent can only be a sub-agent, not the root agent; the root must use the LLM, sequential, parallel, or loop type. Before using this capability, make sure that:- Studio has cloud-provider credentials that can access AgentKit (Volcengine or BytePlus). For a VeFaaS deployment, the bound IAM role must have the corresponding permissions.
- The
defaultproject in the target region contains at least one AgentKit agent center visible to the current account, and that center contains an invokable remote agent. - If Studio role-based access is enabled, the current user has the
developeroradminrole.
Configure the root agent
Add a remote-agent node
Select an agent center
default project in the Volcengine Beijing region (ap-southeast-1 for BytePlus). For another region, set the region under More options before selecting a center from the dropdown. Use the refresh button to reload the list.Configure discovery scope
Test the invocation
support_router, add a remote-agent child, select the Customer Service agent center, and keep the recall count at 3 and the region set to the Volcengine Beijing default. During testing, enter “Investigate this order’s delivery exception and recommend a resolution.” If the center contains a matching capability, the root agent invokes the corresponding remote agent to complete the task.
Troubleshoot remote agents
--generated-agent-test-run-ttl. Each logged-in user can run at most 3 generated-agent test processes concurrently; exceeding the limit returns 429 with a prompt to close unused debug pages and retry. Studio reclaims test processes left behind after a page refresh, and a single test run accepts at most 300 project files. Generated code can call external services or access data available to Studio, so test only trusted projects and give Studio restricted credentials.
Configure memory
After enabling long-term memory for an agent, select one of these backends in Studio:DATABASE_VIKINGMEM_PROJECT and VEADK_STUDIO_PROJECT environment variables, then the default project. Selecting an existing collection uses its name as the long-term memory collection index, and Studio automatically fills the project, region, and memory types (mapped to the DATABASE_VIKINGMEM_PROJECT, DATABASE_VIKING_REGION, and DATABASE_VIKINGMEM_MEMORY_TYPE environment variables, which are not shown on the creation page). If you do not select an existing collection, the collection name is auto-generated from the agent name, and the collection is created at runtime if it does not exist. Use the refresh button to reload the list.
For a local Studio, provide access through VOLCENGINE_ACCESS_KEY and VOLCENGINE_SECRET_KEY. A VeFaaS deployment uses temporary credentials from its bound IAM role. Credentials remain on the server and are never delivered to the browser.
When you select OpenViking, Studio collects the following settings on the creation page and writes them to the generated project’s environment variables:
DATABASE_OPENVIKING_USER_ID) and the runtime user identifier (Runner.user_id) are distinct concepts: the former isolates memories per application or tenant, while the latter serves as the OpenViking peer ID to isolate end-user memories. See Store memory in OpenViking.Configure a knowledge base
After enabling a knowledge base for an agent, select one of these backends in Studio:local backend because its creation flow cannot add documents to the in-process vector store. For local development, use the VeADK SDK to configure a local knowledge base.
When you select VikingDB Knowledge, Studio lists collections visible to the current account in the default project in Beijing. Selecting an existing collection uses its name as the knowledge base index. If you do not select an existing collection, the index name defaults to <agent_name>_kb. Use the refresh button to reload the list.
For a local Studio, provide access through VOLCENGINE_ACCESS_KEY and VOLCENGINE_SECRET_KEY. A VeFaaS deployment uses temporary credentials from its bound IAM role. Credentials remain on the server and are never delivered to the browser.
When you select OpenViking Knowledge, Studio collects the following settings on the creation page and writes them to the generated project’s environment variables:
KnowledgeBase index. When left blank, the generated project auto-generates the index from the agent name (e.g., my_agent_kb). When DATABASE_OPENVIKING_TARGET_URI is not configured, the resource URI is built as viking://user/<knowledge owner ID, or "default" if not set>/resources/<resource index>/; once DATABASE_OPENVIKING_TARGET_URI is set, that full URI is used directly.
DATABASE_OPENVIKING_USER_ID) and the runtime user identifier (Runner.user_id) are distinct concepts: the former isolates resource trees per application or tenant, while the latter identifies the end user. See Store knowledge in OpenViking.Add the code-execution tool
Selecting Code execution in the custom agent’s built-in tools adds therun_code tool to the generated Python and reveals the sandbox configuration it depends on, below the built-in tool list. The code, language, and timeout are supplied by the agent at runtime from the run_code tool signature, while tool_context is injected automatically by ADK and does not need to be set in Studio.
.env.example includes both variables. The sandbox ID and region are used only on the Studio server and are never delivered to the browser.run_code, see the Code sandbox.
View sub-agent handoffs
In multi-agent projects, the root agent can hand a task off to a sub-agent for execution. When a handoff occurs, Studio shows the sub-agent’s replies in a dedicated card labeled “Agent handoff” that displays the sub-agent’s name and description, instead of mixing the sub-agent’s output into the root agent’s reply bubble. The sub-agent’s name and description come from the agent configuration in the project structure. If the sub-agent has no description, the card shows a default note. After the sub-agent finishes, subsequent replies continue to appear as the root agent’s messages.Conversation traces and issue feedback
On the conversation page, each assistant reply provides trace and issue-feedback controls to help investigate a single turn. These controls are available only in regular agent conversations and are not shown in built-in Codex agent conversations.View the call trace
The “Tracing flame graph” button next to an assistant reply opens the call-trace observation panel, which renders the session’s execution trace as a span tree with a detail panel and uses the reply’s end time as the query cutoff when opened.- Local debug sessions read the ADK debug trace directly.
- For a connected cloud Runtime, the Studio server queries APMPlus for the session trace using its own cloud-provider credentials; the browser never touches the credentials. The APMPlus OpenAPI endpoint follows the configured cloud provider:
open.volcengineapi.comfor Volcengine andopen.byteplusapi.comfor BytePlus.
POST /run_sse entry span; if no match is found, it falls back to a broad scan of the session time window and selects the trace closest to the reply end time. Trace data may be temporarily unavailable due to collection latency and should appear after a short retry.null entries) produced during streaming progression, showing only the actual content parts.Issue feedback
The “Issue feedback” button next to an assistant reply reports a problem for that turn. In the dialog, select an issue type and add a description before submitting. The submission includes the turn’s input, output, tool-call records, and trace information for investigation, and is redacted for credentials before being sent. Available issue types:Export a conversation
The “Export conversation” button next to an assistant reply exports all inputs and outputs up to that turn as a PNG image or PDF file. The export is generated locally in the browser without any network request. It includes every user message and assistant reply from the start of the session through the current turn, and appends a note reading “上述会话由 AgentKit Studio 导出,仅供参考” at the bottom. Once generation finishes, the export can be previewed in the dialog, and you can choose an export format:Use smart search
Smart search provides four retrieval sources:- Session: full-text-searches the current agent’s message history.
- Web: calls the current agent’s mounted
web_searchtool. - Knowledge: performs semantic retrieval through the agent’s mounted knowledge base.
- Memory: performs semantic retrieval through the agent’s mounted long-term memory backend.
Deployment network modes
The deploy page lets you choose a network mode for the AgentKit runtime, which determines how it is exposed to the public network:Manage agents
Manage Agents lists the AgentKit Runtimes visible to the current user. Visibility is determined by the signed-in account role:admin sees all Runtimes, while developer and regular users see their own Runtimes and agents approved as enterprise-visible. The list defaults to the Beijing region and can be switched to Shanghai. When the visible scope includes all Runtimes, Runtimes created by the current user are marked “Created by me.” Each agent card shows its visibility status (private or enterprise-visible) and review status (pending, approved, returned, withdrawn). The list exposes:
- Runtime name, ID, status, region, and creation time;
- Model, description, project, version, resources, and update time;
- Bound Memory, Tool, Knowledge, and MCP Toolset identifiers;
- Runtime environment variables and primary-agent information.
- Agent topology, remote traces, and global deployment-task state.
Manage drafts
During custom creation, Studio saves unpublished agent drafts in the current browser, isolated by signed-in user. Drafts appear alongside deployed Runtimes in the Manage agents list, each showing its update time and a “Draft” badge. A draft being deployed shows a “Deploying” badge and lets you view its deployment progress. Drafts can be edited or deleted; deletion asks for confirmation first.${ENV_NAME} reference, with the token value written to deployment environment variables; YAML exports and browser drafts preserve the corresponding environment value. Updating a deployed Runtime reloads existing environment values, and entering a replacement Token overrides the previous value. When an MCP tool’s service URL is changed, Studio prompts you to choose whether to reuse the original credential, enter a new Token, or mark the new URL as requiring no authentication, preventing a stored credential from being silently replayed after the address changes.Hand off a local task to the cloud
Local-to-cloud handoff migrates an in-progress local Codex conversation and project into a Studio cloud Codex Sandbox so the task can continue in the cloud. Use it when local compute, environment, or runtime limits make it preferable to continue a coding task on a cloud Codex. The entry point is on the Codex tab of the “Manage agents” page and is visible only to roles with agent-creation permission (admin and developer).
Install the AgentKit Studio Plugin
Copy the handoff prompt
Run the handoff in local Codex
Track progress and open the cloud session
Handoff environment variables
Update a deployed agent
An agent deployed to AgentKit can be edited again in Studio and updated on the same Runtime instead of creating a new deployment each time. The update produces an incremented image version based on the Runtime’s current version and publishes it on the existing Runtime.Select a deployed agent
Modify the configuration
Update and publish
Verify the update
admin can update all Studio-managed Runtimes, developer can update only their own, and regular users cannot update.
FEISHU_APP_ID and FEISHU_APP_SECRET from the Runtime; keeping it enabled preserves or replaces them with the submitted values. Toggling the Feishu channel on or off on the deploy page regenerates the project to keep app.py, dependencies, and runtime environment variables consistent.Update modes
Studio supports two Runtime update modes, selected automatically based on the Runtime’s current state:Legacy Runtime recovery
For Runtimes deployed before the update capability was introduced (missing a published configuration draft), Studio can recover the agent configuration from the deployed image and runtime environment, enabling updates for these older deployments. Recovery includes:- Rebuilding MCP tool configuration from runtime environment variables and MCP toolset;
- Extracting deployed skill files from the image;
- Generating an editable draft from the recovered configuration.
Update safety checks
When updating a Runtime, Studio performs safety checks before and after publishing to prevent concurrent modifications from overwriting the live configuration:- Before publishing, Studio verifies that the Runtime’s version number and image identity match what was loaded during editing. If the Runtime has been modified by another operation in the meantime, the update is rejected and you are prompted to reopen the agent detail.
- After publishing, Studio verifies that the Runtime version has incremented and the status is Ready. If the version did not increment or the status is abnormal, the update is marked as failed and you are prompted to refresh the detail to confirm the live state.
Deliver agents through GitHub
Studio can deliver the source generated during custom creation to a GitHub repository with two delivery modes. “GitHub code sync” pushes the generated source directly to the target branch, while the Runtime is still published from the deploy button; “Attach continuous delivery” writes an AgentKit Runtime GitHub Actions workflow to the target branch, and subsequent pushes to that branch automatically build and publish to the bound Runtime. Both modes suit teams that need version control and continuous delivery.github-cicd optional dependency group for encryption. See Installation. “GitHub code sync” does not write Secrets and does not require this dependency.Delivery modes
After selecting GitHub delivery in the deployment settings, you can switch between the following modes:Configure GitHub delivery
Both modes share the following form fields:BYTEPLUS_ACCESS_KEY, BYTEPLUS_SECRET_KEY, and the optional BYTEPLUS_SESSION_TOKEN; in Volcengine mode they are VOLCENGINE_ACCESS_KEY, VOLCENGINE_SECRET_KEY, and the optional VOLCENGINE_SESSION_TOKEN. The region follows the publish region in the deployment settings.
Attach continuous delivery during deployment
When you choose “Attach continuous delivery” while creating a new Runtime, clicking deploy first creates the Runtime and then runs the “Attach GitHub continuous delivery” phase: it initializes the target branch and writes the GitHub Actions workflow, and the deployment flow completes only after initialization succeeds. This phase appears as a separate step in the deployment progress and shows a live GitHub delivery log with sync states (syncing, synced, or read failed) that you can expand and copy; logs are redacted server-side before being sent. The workflow file is written to.github/workflows/publish-agentkit.yml in the repository and is triggered when:
- you push to the target branch (commits whose message contains
[skip runtime]skip the publish); or - you trigger it manually.
Version management and rollback
After selecting a Runtime that is bound to GitHub continuous delivery in the workspace, the detail page provides a “Versions” tab. It lists the commit history and workflow runs of the target branch; each version shows its commit, branch, source, publish status, and creation time:Sync source from the command line
Besides the Studio UI, you can use theveadk github-cicd-pipeline command to push an AgentProject JSON exported by Studio to the target branch, corresponding to the “GitHub code sync” mode:
View integration methods
After selecting a deployed agent in “Manage agents”, the detail page offers an “Integration methods” tab. The tab probes the protocols and endpoints that the current Runtime actually exposes and provides ready-to-use request examples, so you can call the agent from outside Studio without consulting the console.Supported protocols
Authentication and API Key
The tab shows the Runtime’s current authentication type:**** by default and is only fetched from the Runtime after you click the reveal button; switching tabs or leaving the agent clears the revealed value. Examples always use placeholders and never embed a real API Key.
Request examples
The tab generates a Python request example for each detected protocol, based on the probe results. Endpoints and app names come from the probe; credentials use placeholders. For the API Server protocol, the example usesrequests to create a session and call the /run_sse streaming endpoint:
message/send method:
Authorization header is not required.Browse agents
The Agents entry in the sidebar opens the agent directory, where you browse, connect to, and inspect the AgentKit Runtimes under your account. The agent selector in the conversation top bar also provides an entry point into this directory. The directory switches between agent types using the filter at the top, defaulting to General agents:admin role; developer and regular users can only view their own Runtimes. The region filter defaults to the Studio’s current region and can be switched to other regions supported by the current cloud provider. The list paginates by the selected region and automatically loads the next page as you scroll to the bottom, showing “All agents loaded” when complete. Use the search box to filter the loaded agents by name.
Each agent card shows the Runtime name, description, creator, and creation time. The creation time is displayed as a relative label (e.g., “3 minutes ago”). Click a card to open that Runtime’s detail view; the Connect button on the card makes the Runtime the agent for the current conversation and switches to the conversation page. The connected agent is pinned to the top of the list. When you have creation permission, the first card in the list is a “Create agent” entry. When loading fails, the directory shows an error message with a Reload button; an empty list shows the corresponding empty-state message. Connection failures are diagnosed the same way as when selecting a cloud Runtime.
Select a cloud Runtime
In cloud mode, the agent selector at the top of the chat page lists the AgentKit Runtimes visible to the current user. The visible scope matches the Manage Agents view and is determined by the signed-in account role. Runtimes are paginated by region. Each Runtime exposes two independent actions:- Connect: makes the Runtime the agent for the current conversation and closes the selector after switching.
- Info: opens a tabbed preview panel that shows the Runtime’s capabilities without connecting to it or persisting the selection.
- Agent info: reads live metadata from the Runtime’s deployed Agent Server, including name, model, description, sub-agents, tools, skills, available search sources, and mounted components with their backend types. This information contains only display-oriented summaries and never returns system prompts, credentials, environment-variable values, or arbitrary serialized objects.
- Runtime details: shows the Runtime model, description, status, region, resources, version, and environment variables available to Studio.
- Access denied: the current account is not allowed to use the Runtime. Refresh the list or sign in again and retry.
- Agent Server unreachable: the Runtime’s Agent Server does not expose a connection interface, usually because the Runtime is not ready or its version is incompatible. Confirm the Runtime status and version.
- Private Runtime unreachable: the Runtime is deployed inside a VPC without a public address, and the current Studio environment cannot reach that VPC. Use a Studio bound to the same VPC, or switch to a Public or Public + VPC deployment.
- Authentication failure: the Runtime service rejected the connection request. Check the Runtime’s authentication configuration.
New-conversation workspace
When starting a new conversation, Studio offers three workspace modes at the top of the conversation page. The mode selector is visible to all signed-in users:- Agent: chat with the selected agent or start a temporary session with a built-in agent.
- Skill customization: generate a new skill from a natural-language description or optimize an existing skill. This mode appears only when an administrator has configured a usable Dev Sandbox.
- Video creation: generate a video from a text prompt and optional reference assets.
Agent chat and built-in agents
The Agent workspace supports two modes:- Agent chat: starts a normal multi-turn conversation with the selected agent. When the input is empty, starter prompts appear for quick access to common questions.
- Built-in agent: uses a platform-provided agent for conversation. You can select Codex or DeepSeek Harness. Codex starts a multi-turn conversation in an independent AgentKit CodeEnv Session with a dedicated editor; DeepSeek Harness opens the DeepSeek Harness workspace in an independent AgentKit CodeEnv Session. Exiting either deletes the cloud Session and does not add it to ordinary session history.
View Runtime instance logs
In cloud mode, after you connect a Runtime and send a message, the hint bar below the composer shows a “View logs” entry. Clicking it opens the “Instance logs” panel, which streams the live logs of the VeFaaS instance handling the current conversation request, so you can locate runtime errors and unexpected output during a conversation. The entry appears only when a cloud Runtime is connected; it is not shown in local mode or for built-in agent sessions. The panel header shows the following information:ERROR/FATAL/CRITICAL, WARNING, INFO, or DEBUG keywords are marked with the corresponding color so you can distinguish them at a glance.
Local configuration
Before using built-in agents locally, prepare one AgentKit CodeEnv Tool in theReady state and configure its ID:
AGENTKIT_SANDBOX_REGION; in Volcengine mode, when it is not set it falls back to the REGION environment variable and then the default cn-beijing. If that region reports the resource as not found, it automatically falls back to the other supported region (Beijing ↔ Shanghai) and continues. Other errors do not trigger fallback. When deployed to VeFaaS, this region matches --region.SANDBOX_CHAT_CODEX); no separate Tool is needed for DeepSeek Harness. Sessions for the two built-in agent types are distinguished by an agent-kind identifier and do not interfere with each other.Codex session controls
After selecting the Codex agent, conversations use a dedicated Codex session composer. The composer exposes permissions and workspace entries on the left of the input, terminal, browser, and file-upload entries in the Add menu, and supports slash commands, model switching, and Skill invocation. These controls apply only to the current Sandbox Session and do not modify the deployed agent.Slash commands
Typing/ in the input opens a slash-command menu that can be filtered by name or keyword. Selecting a command fills the input; press Enter to submit it to the current Codex Session for execution.
Models and Skills
Typing/model triggers the model list; choose one or type a model ID directly to switch the model used by the current conversation. Typing $ browses Skills available in the current workspace; selecting one inserts it as a chip in the input and it is submitted with the message. When the input is empty, pressing Backspace removes the last selected Skill.
Workspace
The workspace button on the left of the input selects the directory where the current Codex Thread runs commands and modifies files. In the dialog you can enter an absolute path directly or browse the directory tree. Once a conversation starts, the workspace is locked; start a new Sandbox Session to choose again.STUDIO_EXPOSE_SANDBOX_ENDPOINT environment variable (any value other than 0/false), the Codex session editor shows a “Copy Sandbox Endpoint” button next to the composer that copies the current Sandbox public endpoint to the clipboard. The button is hidden when the variable is not enabled. It is configured via an environment variable for both local and deployed Studio, and is disabled by default.Permissions
The permissions button on the left of the input opens the Codex Permissions dialog. Settings are saved to the current Sandbox Session and synced to all Threads within it.Action approvals
When the approval policy requires human confirmation and Codex requests a command execution or file modification, Studio opens an approval dialog showing the pending command, file changes, and execution directory. You can Decline, Allow once, or Allow for this session. The decision is recorded as an activity entry in the conversation.Terminal and browser
From the Add menu, choose Enter terminal or View browser to open an interactive terminal or browser view attached to the current AgentKit Session. A loading state is shown while connecting, and you can retry on failure. The same menu also lets you upload images, documents or PDFs, and videos to the current conversation; uploaded images display a preview inline and open in a shared photo viewer when clicked.Status and history
/status shows the current Thread, workspace, model, run state, total tokens, and context window as an activity record. After each assistant reply, the token usage for that turn is displayed. Typing /resume opens the Resume Codex conversation dialog to select and restore a recently updated Thread.
Skill customization
The Skill customization workspace provides a quick entry point for generating and optimizing skills from the new-conversation page, reusing the Skill Center’s Dev Sandbox skill generation. This mode is available only todeveloper and admin roles, and appears in the workspace selector only when an administrator has configured a usable Dev Sandbox and its model credentials; when not configured, the mode is hidden rather than exposing an action that must fail.
Skill generation
Describe the target skill in natural language in the input box, for example “generate a skill that analyzes CSV files and outputs summary statistics”. After submitting, Studio navigates to the Skill Center Dev Sandbox skill generation workspace and pre-fills the description as the initial intent.Skill optimization
Switch to “Optimize”, select the skill space and skill to optimize from AgentKit SkillSpace, then describe the optimization goal in the input box, for example “improve compatibility with Chinese column names”. After submitting, Studio navigates to the Skill Center workspace to optimize the selected skill and optionally overwrite-publish it to the original skill space.Video creation
The Video creation workspace generates videos from text prompts and optional reference assets, suitable for content creation, asset preview, and similar scenarios. This mode is available to all signed-in users. Uploading reference assets requires an administrator-configured persistent storage; when not configured, reference asset upload is disabled, but text-to-video remains available.How to use
- Select the “Video creation” workspace on the new-conversation page.
- Choose a video task mode and, as needed, upload reference assets and set the aspect ratio, resolution, and duration.
- Enter a video description in the input box. After submitting, Studio first enhances the prompt, then creates a video generation task.
- Track progress in the video task dialog: during generation it shows whether the task is queued or the model is generating, along with the elapsed time. You can close the dialog while a task is generating and it continues running in the background without affecting the result; when generation completes, preview and download the resulting video.
Video task modes
Generation parameters
Generation flow
Video generation has two stages, both performed on the Studio server:- Prompt enhancement: the enhancer model expands and normalizes the input prompt and resolves the final task mode.
- Video generation: the generation model creates a video task using the enhanced prompt and parameters. When the task completes, a preview URL and download link are returned.
Reference assets and persistent storage
Reference asset upload and result storage depend on Studio persistent storage. When persistent storage is not configured, the reference asset upload controls are disabled and the corresponding UI shows “管理员未配置持久化存储”; text-only features such as text-to-video remain available. For storage configuration, see Studio persistent storage.Manage session capabilities
Starting with VeADK 1.0.9, Studio can manage tools and skills for the current session when the connected Runtime exposes the session-scoped capability-overlay endpoints. When the connected Runtime exposes the session-scoped capability-overlay endpoints, the agent info panel on the conversation page shows “Add a tool to this conversation” and “Add a skill to this conversation” entries in the tool and skill lists. Added capabilities apply only to the current session: they do not modify the deployed root agent and are not written to other sessions.- Built-in tools: chosen from the VeADK built-in tool catalog; searchable by Chinese name or tool identifier.
- Remote skills: searched from the public Skill Hub, or browsed from AgentKit Skill Spaces by region and project.
VOLCENGINE_ACCESS_KEY and VOLCENGINE_SECRET_KEY, and on VeFaaS use the bound IAM Role. For the complete overlay endpoints and parameters, see Deploy to AgentKit.
Automatic evaluation and optimization feedback
Agents deployed to AgentKit support automatic evaluation and optimization feedback in the workspace. When “Auto-create evaluation sets” is enabled during deployment, Studio creates Good Case and Bad Case evaluation sets for the agent. After a conversation session ends, Studio automatically evaluates each turn and saves the result to the corresponding evaluation set, then generates optimization suggestions based on the accumulated cases.Evaluation set creation
The deployment configuration area provides an “Auto-create evaluation sets” toggle, disabled by default. After deployment succeeds, Studio calls the AgentKit evaluation API to idempotently create two evaluation sets named{agent_name}_good_case and {agent_name}_bad_case for the agent. Creation runs in the “Create evaluation sets” stage, after which the deployment flow enters its final stage.
Automatic evaluation
When a user converses with a deployed agent in Studio, each completed turn is automatically evaluated after a quiet period (300 seconds by default). The evaluation proceeds as follows:- Studio reads the latest assistant reply for that turn from the Runtime.
- The
doubao-seed-2-0-lite-260428model scores the reply on task completion, factual and logical reliability, tool-use soundness, clarity, and safety. - Scores range from 0 to 1; scores of 0.6 or above are saved to the Good Case evaluation set, and scores below 0.6 are saved to the Bad Case evaluation set.
- Auto-evaluated cases are written to the corresponding AgentKit evaluation set, marked as “auto” source in the case list, and display their score and evaluation reason.
Optimization suggestions
Once enough cases have been accumulated through automatic evaluation, Studio generates optimization suggestions based on the agent’s existing evaluation cases. Suggestions are grouped by priority and module and displayed in the workspace’s “Optimization” tab:doubao-seed-2-0-lite-260428 model based on accumulated evaluation cases and the agent configuration, and are for reference only. The evaluation model can be overridden with the VEADK_STUDIO_EVALUATION_MODEL environment variable.Annotate a reply as a Bad Case
When conversing with a deployed agent, you can select a text fragment directly within an assistant reply and add an inline annotation to save that turn as a Bad Case evaluation sample in the corresponding Bad Case evaluation set. The annotation preserves the selected fragment and your note, making it easier to trace the issue back to a specific passage. This capability is available only when all of the following conditions are met:- Connected to a deployed Volcengine Runtime (BytePlus deployments and local debug sessions are not supported);
- The reply has finished generating (not available while streaming is in progress or while authorization is pending).
- Select a text fragment inside the assistant reply bubble. After releasing the mouse, an annotation popover appears near the selection and shows the selected excerpt.
- In the “Note” field, describe the problem or the expected correction.
- Click “Add to Bad Case”. Studio combines the selected fragment and the note into the evaluation case’s comment and writes the turn to the Bad Case evaluation set. On success the popover shows a confirmation message.
View evaluation cases
The workspace’s “Evaluation sets” tab shows all evaluation cases for the agent, filterable by Good Case / Bad Case and auto / manual source. Auto-evaluated cases display a score (on a 0–100 scale) and an evaluation reason; manual cases created through thumbs-up/thumbs-down without an annotation show ”—” in the score column, while manual cases created through annotation display a score and the annotation reason. Cases from both sources can be deleted.Automation integrations
The “Automation” page in the Studio sidebar provides automation integrations for development tools and message channels. Automations are organized into “Development” and “Channels” categories. The Coding Agents integration detects and configures locally installed coding-agent clients; GitHub automations create branches, files, and Pull Requests directly through the browser using the GitHub API; the Feishu automation generates a basic agent and deploys it directly to an AgentKit Runtime from Studio; the website integration embeds a deployed Runtime as a floating chat window on external websites.Configure Coding Agents
Globally installs the bundled VeADK and AgentKit Skills to locally installed coding-agent clients so they can build, debug, deploy, and operate the platform while developing VeADK applications. This integration is badged “Local”: detection and installation run only on the machine hosting Studio and do not access cloud resources.http://127.0.0.1. When accessed through any other hostname (including localhost or a deployed VeFaaS public URL), the card appears disabled with a “仅本地部署可用” tooltip.~/.claude/skills/<skill_id>). Each Skill is written to its own subdirectory containing SKILL.md and any bundled scripts, references, and assets.
developer or admin role.
Template project import and AgentKit Runtime continuous delivery adapt their region options, default region, default model API URL, and required GitHub Secret names to Studio’s current cloud provider. In Volcengine mode the region options are cn-beijing and cn-shanghai (default cn-beijing) and the Secrets are VOLCENGINE_ACCESS_KEY, VOLCENGINE_SECRET_KEY, and the optional VOLCENGINE_SESSION_TOKEN; in BytePlus mode the region is ap-southeast-1 and the Secrets are BYTEPLUS_ACCESS_KEY, BYTEPLUS_SECRET_KEY, and the optional BYTEPLUS_SESSION_TOKEN. The cloud provider is determined by --provider or the AGENTKIT_CLOUD_PROVIDER/CLOUD_PROVIDER environment variables, falling back to Volcengine when unset. PR automated review is triggered through a GitHub App and does not rely on GitHub Actions workflows or GitHub Secrets; see Pull Request automated review.
Template project import
Creates a minimal VeADK agent project with a full Studio App Server in the target repository, along with a continuous delivery workflow. After submission, Studio creates a release branch in the target repository and opens a PR containing the template files and a GitHub Actions workflow. The template project includes anapp.py service entry point, an agent with an example tool, requirements.txt, Dockerfile, .env.example, .gitignore, .dockerignore, and a continuous delivery workflow file. After merging the PR, pushing to the target branch triggers an AgentKit Runtime release.
AgentKit Runtime continuous delivery
Adds a GitHub Actions workflow to an existing repository for continuous publishing to an AgentKit Runtime. Pushing code to the target branch automatically builds and releases a new Runtime version.VOLCENGINE_ACCESS_KEY, VOLCENGINE_SECRET_KEY, and the optional VOLCENGINE_SESSION_TOKEN in Volcengine mode; BYTEPLUS_ACCESS_KEY, BYTEPLUS_SECRET_KEY, and the optional BYTEPLUS_SESSION_TOKEN in BytePlus mode. These Secrets are managed in GitHub and do not pass through Studio.Pull Request automated review
Uses a GitHub App to automatically review pull requests in an isolated Sandbox and publishes the results as GitHub Reviews. After an administrator configures the GitHub App, users install the App to their repositories and enable review per repository in Studio. GitHub sends Pull Request webhooks to Studio, which creates Sandbox review tasks and publishes the results to the corresponding PR.Administrator configuration
Create a GitHub App in GitHub and record the App ID, App slug, private key, and webhook secret. In the GitHub App settings, set the webhook URL to the Studio path/web/github/app/webhook (for example https://<Studio address>/web/github/app/webhook) and set the webhook secret to match the environment variable below. Then configure Studio with the following environment variables:
veadk studio deploy and veadk studio update forward the GitHub App configuration environment variables to the function environment; the private key is preferentially passed as Base64-encoded data.VEADK_STUDIO_TOS_BUCKET and VEADK_STUDIO_TOS_REGION) to persist per-repository review toggles and review records. Without persistent storage, users cannot enable review or view records in Studio.
Usage flow
- After the administrator completes the configuration, the “Pull Request automated review” page displays an install link for the GitHub App.
- Click “Install GitHub App” to install the App to the target GitHub repositories. After installation, Studio automatically loads the list of installed repositories.
- Toggle review on for each repository that should receive automated reviews. Only repositories with review enabled will respond to GitHub webhooks.
- Subsequent non-draft PRs in the target repository automatically trigger Sandbox review tasks; review results are published as GitHub Reviews on the corresponding PR.
- You can also enter a PR URL from an enabled repository in the “Review now” section to manually start a review.
Review records
Studio records recent automatically triggered and manually started review tasks and displays them in the “Review records” section. Each record includes the PR link, status (started, completed, ignored, failed), trigger type (webhook or manual), event type, and time. Records with an in-progress review offer an “Open Session” button to jump to the corresponding Sandbox session.Feishu bot
Website integration
Embeds a deployed AgentKit Runtime as a floating chat window on external websites, allowing visitors to chat with an agent without logging in. Open the “Website integration” card on the Automation page, select a target Runtime, and enter the website domain. Studio generates a dedicated Token and an embed snippet.Prerequisites
- At least one AgentKit Runtime is deployed and has a conversational agent.
- The target Runtime uses API Key authentication. Runtimes using custom JWT authentication are not supported.
- When Studio persistent storage is configured (
VEADK_STUDIO_TOS_BUCKETandVEADK_STUDIO_TOS_REGION), website integration records are persisted in TOS. Without persistent storage, in-memory storage is used and integration records are lost when Studio restarts.
Creating a website integration
- In the “Add website” area, select the target AgentKit Runtime and enter the domain of the website where the chat window will be embedded.
- Click “Generate Token”. Studio validates the conversational agents on the selected Runtime and creates an integration record with a domain-bound Token.
- Review the created integration in the “Added websites” list. Each record shows the domain, Runtime name, agent name, and creation time.
http or https address. It can include a port (for example, localhost:5173 or example.com:8080) but must not contain a path, query parameters, or credentials.
Embedding the chat window
Copy the generated<script> tag from the “Embed method” area and paste it before the </body> tag on the target page. The script loads the chat component from the Studio server and renders an expandable floating chat window in the bottom-right corner of the page.
How it works
When a visitor opens a page with the embedded chat window, the chat component sends a session-creation request to the Studio embed endpoint and obtains a session token valid for one hour. Subsequent messages are forwarded through Studio to the bound Runtime using the session token, and replies are streamed back. A new session must be created after the session token expires. Studio accesses the Runtime using the configured Volcengine or BytePlus credentials. Website visitors never receive any credentials or direct Runtime addresses.Deleting a website integration
Click the “Delete” button on the corresponding record in the “Added websites” list and confirm to remove the integration. After deletion, embed code using that Token can no longer create new sessions. Existing sessions expire when their session token expires.Resource library
The “Resource library” page in the sidebar consolidates skill, knowledge base, and artifact management into three tabs:Skills
The Skills tab provides skill space management and Dev Sandbox skill generation. Here you can create and manage skill spaces, upload and browse skills, and generate new skills or optimize existing ones from natural-language descriptions using the Dev Sandbox. Skill generation uses a dedicated AgentKit DevEnv Tool and is independent of the CodeEnv-based built-in agent mode.Prerequisites
Skill space management and generation operations are performed by the Studio server using its own Volcengine credentials; the browser never touches them. For local startup, provide access throughVOLCENGINE_ACCESS_KEY and VOLCENGINE_SECRET_KEY; for VeFaaS deployments, use the IAM Role bound to the function.
Dev Sandbox skill generation requires an administrator to configure an AgentKit DevEnv Tool in the Ready state. For local startup, specify the Tool ID via the SANDBOX_DEV environment variable; for VeFaaS deployments, it is auto-created or reused via --sandbox-dev-tool-id. When not configured, skill space management and upload remain available, but the “Create skill” and “Optimize” actions show “Dev Sandbox not configured” and are disabled.
developer and admin roles. Skill space browsing is available to all signed-in users, but non-admins can only see skill spaces they created.Skill publish storage
When publishing a skill to a skill space, Studio uploads the skill package to a TOS bucket. The bucket is selected by the following priority:VEADK_SKILL_CREATOR_TOS_PREFIX environment variable, defaulting to agentkit/skills.
VEADK_SKILL_CREATOR_TOS_BUCKET environment variable.Manage skill spaces
Skill spaces are loaded by region and support filtering by name. Administrators can see all skill spaces visible to the current account across all regions; non-admins see only spaces they created.cn-beijing and cn-shanghai, defaulting to cn-beijing; for BytePlus the option is ap-southeast-1. Skill space cards display their region; spaces without an explicit region show the current cloud provider’s default region.studio_share_space is the enterprise shared skill space, always shown first in the Skills library, where administrators can maintain shared skills; studio_review_space stores submitted skill versions for review and is excluded from the Skills library and skill selectors. Each space is created once per cloud provider region and VEADK_STUDIO_PROJECT (or default). System spaces cannot be renamed or deleted; content in the review space can only be modified through the skill review workflow. When creating or renaming a skill space, user-entered names that conflict with reserved system space names are rejected.display_name tag. The Skills library cards, details, and selectors prefer the display name and fall back to the cloud name when the tag is missing or blank. Skill lookups and exports continue to use the original cloud name.Manage skills
After entering a skill space, you can browse all skills within it and filter by name. Each skill supports the following actions:SKILL.md and validates file count and path safety, automatically ignoring macOS metadata files inside __MACOSX directories. Full frontmatter and skill format validation is performed by ADK at load time. A validation function is available to pre-check ZIP contents before upload.The skill name must be unique within the target skill space. If a skill with the same name already exists in the target space, the upload is rejected; rename the skill and re-upload, or use the optimize function to overwrite the existing skill.__MACOSX directories, .DS_Store, and ._-prefixed files while extracting. For skills using the legacy SkillSpace interface type, Studio falls back to resolving the skill by name so their file list and SKILL.md still load. A download or parsing failure returns a structured retryable error; retry after verifying the region, credentials, and network.Generate skills with the Dev Sandbox
Selecting “Create skill” on a skill space page opens the Dev Sandbox skill generation workbench. The workbench creates an independent development sandbox session via the DevEnv Tool and generates aSKILL.md and associated files in ADK skill format from a natural-language description.
Generation plan
Generation workflow
Enter goal and configuration
Generate candidates
Validation and auto-repair
SKILL.md, non-compliant frontmatter, or mismatched directory name), auto-repair runs up to 2 times; manual re-repair is available after auto-repair is exhausted.Preview and refine
Download or publish
Optimize an existing skill
When browsing skills in a skill space, you can select “Optimize” for an existing skill. The optimization workflow is similar to creation but uses the existing skill as the source: enter an optimization goal, start a Dev Sandbox session, and generate an improved version. After optimization, you can choose to overwrite the original skill or publish it as a new skill.Skill review workflow
The skill review workflow lets you submit personal skill versions to the review space for administrator approval before publishing them to the enterprise shared skill space.Submit for review
author tag. The source space, skill name, version, and submission time are also recorded in tags. Duplicate submissions of the same source version are rejected while pending or approved; a returned version can be resubmitted as a new request.Administrator review
studio_share_space. After a return, the submitter can resubmit after fixing the issues; earlier decisions remain in history.Shared skill management
studio_share_space. Shared skills are read-only snapshots, independent of personal skill versions.Automatic skill assessment
Submitted skill versions are automatically assessed using AI. Assessment uses the same model as automatic agent creation and scores through the Ark structured-output API.review-scores/ directory in the Studio persistent storage bucket. Review status, total score, assessment time, model, and report location are recorded in skill tags. Administrators and the submitting user can view the full JSON report; administrators can retry failed assessments. Completed reports are immutable. Manual review decisions and published shared skills remain independent of AI scores.Review Center
The Review Center is located in the sidebar’s Administration group, alongside User Management. It is visible only to administrators; the group is hidden entirely when no entries are visible. Administrators can switch between skill and agent review requests in the Review Center, with region, status filters, and search. Skill review requests are loaded from the regional review space. Each request shows the AI assessment status and total score; the details view exposes per-dimension scoring rationale, risks, file coverage, model metadata, and JSON report download. Review requests support approval (with an optional comment) or return (with a required reason and optional comment), and display reviewer details and history. Agent review requests are loaded from the Runtime list for the selected region, showing agents with a submitted review application. Each request shows the agent name, applicant, submission time, current version, and model; the details view shows the agent description, application notes, and configuration fingerprint verification result. Administrators can approve (with an optional comment), return (with a required reason and optional comment), or publish directly. After a review action, the applicant can see the review status, reviewer, decision time, and comments on the agent card. See Agent publication review.Agent publication review
Agent publication review allows developers to request that a deployed agent be shared with everyone in the organization, subject to administrator approval. Review records are stored in Runtime tags, independently of skill reviews.Submit a request
veadk:managed must be true) and be in a running or ready state. After submission, the agent enters a pending review state. The application record is written to Runtime tags, including the application ID, status, submission time, application note, and configuration fingerprint.Administrator review
Enterprise visibility and unpublish
Knowledge
The Knowledge tab lets you create and manage user-owned AgentKit knowledge bases, and upload files or import web pages as knowledge data. Knowledge bases are created on the AgentKit platform; creation and write operations require Studio to use Volcengine or BytePlus credentials to call the AgentKit knowledge service.Create a knowledge base
Click “Create knowledge base” to open the dialog and provide the following:cn-beijing and cn-shanghai; BytePlus deployments list knowledge bases in ap-southeast-1. When creating a new knowledge base, the region options are cn-beijing for Volcengine and ap-southeast-1 for BytePlus.
Manage knowledge bases
Each knowledge base card shows the name, description, creator, and status. Users with management permission can edit the description, add data, or delete the knowledge base; users without permission can only browse.Add knowledge data
After entering a knowledge base, users with management permission can add knowledge data. Three source types are supported:Artifacts
The Artifacts tab consolidates documents, images, and videos generated during conversations. Image and video artifacts are persisted to Studio persistent storage and remain available after refreshing the page or switching sessions; document artifacts are shown only while the corresponding session events are available. Artifacts are grouped by session source, showing the associated app, session, and creation time, with type filtering and search support. Click an artifact to preview images or videos; document artifacts support inline preview. When you open the Artifacts tab, Studio automatically collects image and video artifacts from the currently visible session events and syncs them to persistent storage. Artifacts that have already been saved are not written again; only image and video artifacts are synced.Manage artifacts
Each persisted artifact supports the following actions:Prerequisites
Artifact persistence depends on Studio persistent storage. When persistent storage is not configured, the Artifacts tab cannot sync or display persisted artifacts and shows “管理员未配置持久化存储”. For configuration details, see Studio persistent storage. Artifact syncing validates the source URL: only HTTPS addresses from trusted generation services are accepted, and sources that resolve to private or reserved IP ranges are blocked, preventing content from untrusted addresses. The default trusted source host suffixes arevolces.com, volccdn.com, byteplus.com, and bytepluses.com. The maximum size for a single artifact defaults to 512 MB.
The following environment variables adjust artifact sync behavior:
Scheduled tasks
The Scheduled tasks workspace is accessible from the sidebar via the “Scheduled tasks” entry. It runs a fixed text prompt against a deployed Runtime Agent on a recurring schedule. Each trigger creates an independent session for that Runtime, and the task always follows the Runtime’s currently active version. Scheduled tasks are a Beta capability.Create and edit tasks
Click “Create task” on the Scheduled tasks page to open the task form. Editing an existing task uses the same form. The form contains the following fields:Manage tasks
The task list shows the name, associated Runtime, schedule, enabled status, next execution time, and latest result. Each task supports the following actions:Execution history
Execution history records the status, duration, Runtime version used, and session identifier for each run, and retains the final answer and error details. Run statuses include queued, preparing, running, auto-retrying, succeeded, failed, cancelled, and skipped. Each run uses an independent session, and results and errors are retained permanently. Runs in queued or running state can be cancelled: queued runs can be dequeued, and running runs can be terminated. Failed runs can be re-executed. Execution history supports manual refresh.Execution mechanism
Task definitions, run locks, execution history, and results are stored in the Studio private TOS bucket. In cloud deployments,veadk studio deploy creates or updates two additional stateless VeFaaS functions and corresponding minute timers: a scanner copies due tasks into a durable execution queue and advances each task’s schedule once per minute, while an asynchronous worker drains the queue, invokes the Runtime, and writes terminal results. The scanner, worker, and Studio can restart independently without losing tasks.
Duplicate timer deliveries are deduplicated with immutable run IDs and TOS conditional writes; an ETag lock prevents concurrent executions of the same task across instances. The worker uses the function IAM role to read the Runtime’s current endpoint and version, and does not store user tokens or AK/SK credentials.
When running Studio locally with veadk studio --vite, the Studio backend starts independent local scan and execution loops; no separate scheduler process is required.
veadk studio options
Deploy to VeFaaS
veadk studio deploy deploys Studio as a VeFaaS application protected by VeIdentity login. It creates or reuses a Serverless API Gateway. Unless you pass an IAM role, it also creates or reuses VeADKFrontendServiceRole and VeADKFrontendPolicy. When --user-pool-id and --allowed-client-id are omitted, the command creates or reuses a named VeIdentity user pool and web client in the deployment region. After deployment, the command registers the public callback with the user-pool client and updates the application configuration.
Before deployment, the command checks the VeFaaS service role ServerlessApplicationRole: if it is missing, the role is created automatically with the vefaas_full_access custom policy and the required system policies; if the role already exists, the command reconciles any missing custom and system policies for both Volcengine and BytePlus. This check is independent of --iam-role and runs even when a custom role is specified.
Prepare suitable Volcengine credentials, then run:
--user-pool-id and --allowed-client-id are omitted, the deploy command creates or reuses a user pool named veadk-studio-{vefaas-app-name} and a web client named veadk-studio-{vefaas-app-name}-web in the region selected by --region, and prints their IDs on completion. You can also pass both options to use existing resources; passing only --user-pool-id creates or reuses a web client within that pool. Passing --allowed-client-id without --user-pool-id raises an error.
To deploy the unreleased Studio capabilities documented in Preview, run this command from the VeADK source directory and use --from-source so the current source is built into VeFaaS. Without this option, deployment uses the latest PyPI release, which does not contain unreleased capabilities.
veadk studio deploy treats VeFaaS deployments as idempotent by application name: deploying again with the same --vefaas-app-name updates the existing application’s function code bundle instead of creating a duplicate function, preserving the original URL, IAM, gateway, and Identity configuration. This is suitable for upgrading Studio or redeploying under the same application name.--provider byteplus, the staged requirements file includes --extra-index-url https://pypi.org/simple at the top, allowing pip to fall back to the public PyPI index when packages are unavailable from the BytePlus default package index, preventing deployment failures caused by missing packages.--volcengine-access-key / --volcengine-secret-key options take precedence; otherwise the VOLCENGINE_ACCESS_KEY / VOLCENGINE_SECRET_KEY environment variables of the current process are read; when neither is present, the [default] profile in ~/.volc/credentials is used. Any source that yields a complete access key and secret key is sufficient to proceed. For STS temporary credentials, the session token is supplied via --volcengine-session-token, or resolved from the VOLCENGINE_SESSION_TOKEN / VOLC_SESSIONTOKEN environment variables and the session_token field of the [default] profile in ~/.volc/credentials; when not provided it is left empty and only long-lived AK/SK are used.
On success, the terminal prints the public URL, VeFaaS application ID, Identity region, user pool ID, user pool domain, and client ID. Opening the URL redirects the user through VeIdentity login.
When the deployment automatically provisions an Identity user pool, a TOS bucket, or sandbox Tools (i.e., existing resources were not specified via --user-pool-id with --allowed-client-id, VEADK_STUDIO_TOS_BUCKET, or sandbox Tool ID options), the terminal additionally prints a summary of the configured cloud resources. The summary lists each sandbox Tool type and its ID, the private TOS storage address, the user pool ID, and the client ID, along with a link to the Identity console for the corresponding cloud provider. When Studio manages the user pool (i.e., no existing pool is passed via --user-pool-id), deployment configures the pool for SSO-only sign-in by default: password sign-in, passwordless sign-in, sign-up, recovery, and unconfirmed-user login are disabled, and an SSO identity provider must be configured in the Identity console before inviting users. Pass --allow-dangerous-login to explicitly enable those local login flows on a Studio-managed user pool; the flag only applies to Studio-managed pools. When an existing user pool is provided via --user-pool-id, deployment preserves that pool’s existing login settings and ignores this flag.
The deployment also creates or updates two stateless VeFaaS functions and corresponding minute timers for scheduled-task scheduling: a scanner copies due tasks into a durable execution queue and advances schedules once per minute, while an asynchronous worker drains the queue, invokes the Runtime, and writes results. After deployment, the terminal prints the scanner and worker function IDs and timer IDs.
--region selects the Studio deployment region, defaults to cn-beijing, and also supports cn-shanghai; the VeFaaS Application, Function, API Gateway, and AgentKit resources use the selected deployment region. When both --user-pool-id and --allowed-client-id are provided, the command locates the existing VeIdentity user pool and client across the deployment region and the Beijing and Shanghai regions: it queries the deployment region first, then searches the other region on a miss, emitting a warning and continuing when matched cross-region. When these options are omitted, the user pool and client are created or reused in the deployment region without cross-region lookup. --project selects the VeFaaS function project and defaults to default.
The deployer’s long-lived access and secret keys are not written to the VeFaaS application environment. Deployed Studio uses temporary credentials from its bound IAM role. During deployment, a knowledge signing key is generated or reused and written to the VEADK_STUDIO_KNOWLEDGE_SIGNING_KEY environment variable to identify knowledge base ownership. If the variable already exists, the existing value is preserved; otherwise, a deterministic key is derived from the deployment secret and deployment identity, so the same deployment can verify previously created knowledge bases after updates.
When --sandbox-chat-codex-tool-id is omitted, deployment creates the AgentKit CodeEnv Tool for built-in agents in the region selected by --region; the deploy command also creates an additional DevEnv Tool for the Dev Sandbox. Sessions created by these Tools use the same region as the VeFaaS Function and API Gateway. Model credentials are configured only on the respective Tools; the VeFaaS Function receives only the Tool IDs. You can pass existing Tool IDs when suitable Tools are already available in the same region.
Deployment also provisions a snapshot-enabled Studio Sandbox Tool concurrently alongside the other sandbox Tools, for code projects. Model credentials (MODEL_AGENT_NAME, MODEL_AGENT_BASE_URL, and MODEL_AGENT_API_KEY) are obtained automatically and injected into the Tool. The Tool type depends on the cloud provider: BytePlus creates a StudioEnv-type Tool and Volcengine creates a Private-type Tool. Deployment, CLI updates, and cloud OTA updates share the same provisioning flow; existing workspace bindings are preserved. The Tool defaults to 8 CPU cores and 16 GB of memory, using the studio-sandbox image corresponding to the deployment region:
STUDIO_WORKSPACE_IMAGE environment variable to specify an image accessible in the selected region. The launch command uses the image’s built-in /opt/gem/run.sh and no longer injects editor patches. Volcengine defaults to Chinese and BytePlus defaults to English; model configuration follows the Studio configuration for the respective cloud environment. You can specify an existing persistent Tool via --studio-sandbox-tool-id (or the STUDIO_WORKSPACE_TOOL_ID environment variable); in that case the Tool is reused without creating or modifying its configuration. After deployment, the workspace is bound via the STUDIO_WORKSPACE_TOOL_ID environment variable, and the System info page displays the corresponding Tool ID.
The model, endpoint, and candidate regions for sandbox Tools differ by cloud provider: Volcengine uses the doubao-seed-2-1-pro-260628 model with https://ark.cn-beijing.volces.com/api/v3, and candidate regions cn-beijing and cn-shanghai; BytePlus uses the dola-seed-2-1-turbo-260628 model with https://ark.ap-southeast.bytepluses.com/api/v3, and candidate region ap-southeast-1.
IAM permission pre-check
veadk studio deploy automatically runs a read-only IAM permission pre-check before creating any cloud resources. The pre-check reads the caller’s attached IAM policies and evaluates each required IAM Action for the deployment. The required permission scope depends on the deployment configuration: when existing identity resources are not specified via --user-pool-id and --allowed-client-id, permissions for creating user pools are required; when --iam-role is not provided, role management permissions are required; when no existing bucket is specified via VEADK_STUDIO_TOS_BUCKET, bucket creation permissions are required; when sandbox Tool IDs are not specified, Tool creation permissions are required; when --gateway-name is not provided, gateway management permissions are required (including apig:UpdateRoute to enable the HTTP methods required by Studio APIs); the deployment also requires VeFaaS permissions to create and update the scheduled-task scheduler functions and minute timers (vefaas:ListFunctions, vefaas:GetFunction, vefaas:ListTriggers, vefaas:CreateTimer, vefaas:UpdateTimer); the deployment also sets the Studio function’s minimum instance count to 1 to keep one warm instance, so vefaas:UpdateFunctionResource is required; when --keep-failed-deploy is not enabled, permissions for cleaning up failed resources are also required.
After the pre-check completes, the terminal prints a permission table listing each IAM Action, its purpose, and whether it is satisfied. If any permission is missing, the terminal also prints the IAM configuration URL for the corresponding cloud provider to help you add the missing permissions. The Volcengine URL is https://console.volcengine.com/iam/policymanage and the BytePlus URL is https://console.byteplus.com/iam/policymanage.
In a formal deployment (without --precheck-only), if any permission is missing, the command prompts for confirmation before continuing; the default is to decline, which stops the deployment, and confirming allows the deployment to proceed despite the missing permissions. When --precheck-only is specified, a missing permission causes the command to exit immediately without a confirmation prompt.
Use --precheck-only to run only the permission pre-check without creating any cloud resources, which is useful for verifying credential permissions before a formal deployment:
In-app updates
Studio reads new releases from the centrally maintained TOS source incn-beijing, regardless of the deployment region, so administrators can update the frontend and Python backend together from the navbar without extra options. The default release bucket depends on the cloud provider: veadk-studio for Volcengine and veadk-studio-byteplus for BytePlus. Use --studio-update-bucket and --studio-update-prefix (or the matching VEADK_STUDIO_UPDATE_BUCKET and VEADK_STUDIO_UPDATE_PREFIX environment variables) to override the default release source; the release source region is always cn-beijing. During the update, the cloud-provider entry point is selected automatically based on the CLOUD_PROVIDER (or AGENTKIT_CLOUD_PROVIDER) environment variable in the deployment; BytePlus deployments also have BYTEPLUS_REGION written during the update.
Studio checks for updates every three minutes and lists available versions with their change notes. After an administrator confirms an update, Studio prefers downloading a thin release bundle, which does not embed runtime dependencies and instead pulls verified Python wheels and the AgentKit CLI from the current cloud provider’s public artifact source at deploy time. If the thin bundle or the public artifacts are unavailable, Studio automatically falls back to the full release bundle that includes all dependencies. Whichever bundle is used, Studio verifies its integrity before replacing the Python backend and frontend assets together and re-releasing the existing Application. The Application and Function IDs, public URL, SSO client, and server-side secrets are preserved.
VEADK_STUDIO_TOS_BUCKET and VEADK_STUDIO_TOS_REGION) is not configured, a TOS bucket is created or reused in the deployment region; if sandbox snapshot Tools (SANDBOX_CHAT_CODEX_SNAPSHOT, SANDBOX_CHAT_OPENCLAW_SNAPSHOT, SANDBOX_CHAT_HERMES_SNAPSHOT) are missing, they are created for the current cloud provider. The provisioned resources are written as environment variables into the Function configuration so that older Studio versions gain the new persistent-storage and sandbox capabilities after upgrading. The update progress panel shows a “Checking and provisioning Studio cloud resources” stage.
The in-app update also creates or updates the scheduled-task scheduler functions and minute timers; the update progress panel shows a corresponding stage.
console.volcengine.com, and BytePlus deployments point to console.byteplus.com.
veadk studio update command.vefaas:GetApplicationRevisionLog permission, the log panel is replaced with a permission notice that links to the corresponding provider’s IAM console (console.volcengine.com/iam for Volcengine, console.byteplus.com/iam for BytePlus) so an administrator can grant access; the update continues without interruption. After the update completes, Studio automatically reloads the page to load the new version; if an update dialog was open before the reload, it is automatically restored when the page reopens.
Deployment options
Deploy to VeStack
In Volcengine VeStack (hybrid-cloud) environments, the public-cloud VeFaaS Application API is unavailable.veadk studio deploy with --deploy-target vestack deploys Studio as a VeFaaS image function exposed through a shared APIG Gateway with a dedicated domain. Before deploying, build a linux/amd64 Studio image locally or in CI and push it to a VeStack image registry.
When to use
- The deployment target is VeStack or a private cloud that does not support the public-cloud VeFaaS Application API.
- Studio needs to use IAM-role-bound temporary credentials (STS) to access hybrid-cloud AgentKit OpenAPI, without storing long-lived AK/SK in the image or function environment.
- Each sandbox session requires a dedicated AgentKit Tool for disk persistence and session isolation.
Build the image
Build alinux/amd64 image using the Dockerfile in the VeADK source directory:
--build-arg VEADK_INSTALL_DEPENDENCIES=0 to skip full dependency resolution and install only the current repository and wheels staged under docker/vendor/. Before using this mode, stage wheels that are absent from the VeStack mirror:
Deploy command
Prepare suitable Volcengine credentials, then run:- Validates that
--providerisvolcenginewhen--deploy-targetisvestack. - Parses
--vestack-openapi-urland sets the OpenAPI Host and Scheme environment variables for VeFaaS, APIG, IAM, and Identity so SDK requests target the VeStack control plane. - Creates or reuses a VeIdentity user pool and web client (unless existing resources are specified via
--user-pool-idand--allowed-client-id). - Creates or reuses a Studio-specific IAM Role and custom policy; when
--iam-roleis not provided, a role is created automatically. Some public-cloud system policies may be unavailable in VeStack; in that case, missing system policies are skipped and the validated custom policy is used. - Creates or updates a VeFaaS image function with the image, startup command, port, and role, passing only non-sensitive environment variables.
- Releases the function and waits for the release to complete.
- Creates or reuses an APIG Gateway, Service, Upstream, and Host Route to forward the dedicated domain to the function.
- Registers the callback URL with the VeIdentity user-pool client.
- Outputs the access endpoint, function ID, gateway ID, service ID, upstream ID, route ID, and IAM Role.
Per-session independent Tools
In VeStack deployment mode, Studio creates a dedicated AgentKit Tool for each sandbox session instead of sharing a single Tool. Independent Tools support disk persistence and are automatically cleaned up when the session is deleted. When creating a session, you can specify the disk size (diskGb parameter), with a valid range of 5–100 GiB. The default value is determined by the deployment configuration.
--vestack-hermes-model-agent-name, --vestack-hermes-model-api-base, --vestack-hermes-model-api-key, --vestack-hermes-model-id, and --vestack-hermes-model-agent-name). When not configured, the Hermes agent displays “Administrator has not configured the Hermes model or IAM Role.”
VEADK_STUDIO_CODEX_TOOL_PER_AGENT=true). The Hermes independent Tool is enabled only when complete Hermes model parameters are provided.OpenAPI endpoint overrides
In VeStack environments, the OpenAPI endpoints for each cloud service typically point to internal addresses. At deploy time,--vestack-openapi-url uniformly sets the OpenAPI Host and Scheme for VeFaaS, APIG, IAM, and Identity. After deployment, Studio overrides each service’s OpenAPI endpoint through the following environment variables:
VeStack deployment options
The following options take effect only when--deploy-target vestack is used; they supplement the deployment options.
Studio BFF dynamic tools
When the connected AgentKit Runtime has enabled the Studio BFF dynamic tools host viaenable_studio_tools=True, the Studio agent information rail shows Add Studio tools to this conversation below the agent’s static tools. New chats start with every Studio tool disabled; users can toggle individual tools, and the selection persists across turns within the current browser process. The browser sends the selected tool ID list on each Runtime run; an empty or omitted list uses the ordinary run path. Tool code and credentials remain in the Studio BFF and are never sent to the Runtime or browser.
enable_studio_tools parameter. See Deploy to AgentKit.Session sandbox environments
On the conversation page, you can mount built AIO Sandbox or Codex Sandbox runtime environments to the current session. Once mounted, the agent gains the following tools for executing shell commands or delegating tasks inside the mounted environments:delegate_to_codex_sandbox to delegate a complete task rather than splitting it into multiple execute_in_sandbox calls. The delegation result is returned directly to the user as the final tool call result; there is no need to use execute_in_sandbox to retrieve files from the Sandbox.
Branch comparison
The Studio BFF dynamic tools include abranch_compare tool. When the user asks to compare two styles, two approaches, or two creative directions, the agent can call this tool to generate two directly comparable branches in parallel and present the results as an inline card in the conversation.
The tool accepts the following input parameters:
doubao-seed-2-0-lite-260428 and can be overridden with the VEADK_STUDIO_BRANCH_MODEL environment variable. The tool timeout is 120 seconds.
AgentKit CLI terminal
The Studio sidebar footer provides a “Try AgentKit CLI” entry. Clicking it opens a terminal dialog over the current page. The terminal runs inside an AgentKit Dev Sandbox and automatically executesagentkit --help and agentkit --version on startup, providing a quick way to inspect the available AgentKit CLI commands and the installed version.
The terminal creates a non-persistent session backed by the AgentKit Dev Sandbox (SANDBOX_DEV). When opening the terminal, Studio follows this sequence: search for an existing ready session for the current user, create a new non-persistent session if none exists, wait for the session to become ready, and then launch the terminal. During creation, the dialog shows a loading animation with status labels (searching for an existing environment, initializing environment, connecting to an existing environment). Once the terminal is ready, the toolbar displays the remaining time before the environment is recycled.
SANDBOX_DEV environment variable; for VeFaaS deployments, it is auto-created or reused via --sandbox-dev-tool-id. When not configured, the terminal shows “管理员未配置 AgentKit Dev Sandbox,请配置后再使用”. See Sandbox information for configuration details.Studio Sandbox code projects
Studio provides persistent cloud code projects. Each user has one persistent cloud Sandbox, and projects are stored as directories under/home/gem/Projects. Users can create, name, and reopen projects from the workspace. The project list is stored on the Sandbox filesystem and survives Studio restarts.
Creating and opening projects
From the workspace page, select “Code projects” or create a new project from the workspace. When creating a project, enter a project name and Studio creates the corresponding directory in the user’s persistent Sandbox, initializing a Git repository, a Python virtual environment, and project template files. Creating a new project reuses the user’s existing Sandbox session; opening a project switches the VS Code working directory to the corresponding project path./code-server/; signed routing parameters remain private and are not cached. Returning to the management view keeps the editor mounted; switching directories opens the selected project directly.Persistence and recovery
The Studio Sandbox Tool has persistent snapshots enabled. All of a user’s projects share the same persistent Sandbox session. When opening a project, if the remaining session time is less than one hour, Studio automatically extends the session to eight hours, and the title bar shows the remaining countdown. Studio reuses the user’s stable cloud session identity and automatically restores the latest ready snapshot after hibernation, rather than creating an empty replacement session. The project management panel supports fullscreen expansion, and the embedded browser uses the available page space.Development environment
The Studio Sandbox image is built on the AgentKit Code Sandbox and includes the following development environment:- A dedicated VeADK Python environment, including
veadk-pythonand theagentkitcommand - code-server (VS Code in the browser) and Jupyter
- Python syntax highlighting, BasedPyright code completion, and Ruff formatting
- Each project automatically creates Bash and Codex integrated terminals with the working directory set to the current project
- Dark Modern theme, with Maple Mono font for code and terminals
MODEL_AGENT_API_KEY, MODEL_AGENT_NAME, and MODEL_AGENT_BASE_URL, Codex automatically generates the model configuration without requiring interactive login.
Project templates
The default template is passed to the Sandbox by Studio when creating a project, includingmain.py, README.md, AGENTS.md, and .gitignore. The ${project_name} and ${agent_name} placeholders in the template are replaced with the project name and valid Python agent name at creation time. Modifying the template only requires updating Studio — no image rebuild is needed, and existing projects are not overwritten.
New dependencies in templates are not automatically installed; runtime dependencies are still managed by the image.
Developer resources
The Studio sidebar footer provides a “Developer resources” entry. Clicking it opens a developer resources page over the current page, displaying the following content:- Related links: Quick links to the VeADK documentation, AgentKit CLI documentation, AgentKit platform documentation, and AgentKit console.
- Best practices: Reference articles on developing and deploying agents with VeADK and AgentKit CLI.
- Showcases: Application examples built with VeADK, covering a multi-agent research assistant, multimodal content analysis, a customer service workbench, a web search agent, and an A2UI interactive application.
Frontend usage telemetry
Studio frontend product-behavior data is reported through TEA to track instance visits, sign-in usage, and the outcomes of agent deployment, sandbox creation, agent connection, message sending, debug test runs, and source code downloads. Telemetry is automatically enabled when runningveadk studio (both local startup and veadk studio deploy instances) and requires no configuration; veadk frontend does not enable it. Reporting failures do not affect normal Studio usage. After the page loads, Studio records a single anonymous page entry before the user signs in; user identity is associated only after sign-in, distinguishing anonymous visits from authenticated visits.
During deployment, Studio automatically provides the deploy ID, user-pool ID, application ID, function ID, deployment region, project, and cloud account ID context to the frontend through the /web/ui-config endpoint for event correlation; no manual setup is required. The cloud account ID is resolved automatically by veadk studio deploy and veadk studio update during deployment or update and written to the runtime environment; it does not represent an individual user identity. When account ID resolution fails, the deployment or update is not interrupted; the sanitized resolution error is recorded as account_id_resolution_error in the telemetry context.
Update a deployed Studio
veadk studio update rebuilds Studio from a local VeADK source checkout, updates the existing VeFaaS Function code, and releases the original Application. The built package does not embed the full offline runtime or AgentKit CLI; instead, verified dependencies are pulled from the current cloud provider’s public artifact source at deploy time, reducing the upload size. Install Node.js and npm, then run the command from the VeADK source directory:
--region and --project are omitted, the command searches Beijing, Shanghai, and all visible projects. If multiple Applications have the same name, add a region or project to narrow the scope. The update preserves the Application and Function IDs, public URL, SSO, IAM, gateway, and existing environment variables. Branding and the CodeEnv and DevEnv Tool IDs change only when their options are explicitly supplied. The update also checks and provisions the Studio Sandbox Tool: if the function environment is missing STUDIO_WORKSPACE_TOOL_ID, the update automatically creates a snapshot-enabled Studio Sandbox Tool, configures model credentials (MODEL_AGENT_NAME, MODEL_AGENT_BASE_URL, MODEL_AGENT_API_KEY), and saves the binding; when a Tool ID already exists, the binding is preserved. If creation fails, the update reports an error and does not ignore the failure. When updating from an older version that does not support code projects, the new version provisions and saves the Tool ID in the background on first launch; code projects are temporarily unavailable during provisioning, and failures are logged so you can check permissions and retry the update. When the function uses the default Studio IAM role, the update also refreshes the role’s managed policies to the latest version; custom roles are not modified. The update also registers the /oauth2/callback callback of the current Studio public URL on the bound VeIdentity user-pool client and enables skip-consent, so SSO login remains usable after the update; if registration fails, the terminal prints a warning and instructs you to add the URL to the client’s allowed callback URLs manually. When querying existing deployments and submitting the code-bundle update, the command automatically retries transient server errors such as rate limiting and network jitter; if it still fails after retrying, the terminal notes that the cloud release may still be in progress and you can rerun the same update command shortly after.
The update also creates or updates the scheduled-task scheduler functions and corresponding minute timers.
Studio roles and Runtime access
When deploying Studio, role management is backed by Identity user groups. The only deployment role option is--super-admin, which accepts an existing Identity user’s email or UID:
veadk studio update --vefaas-app-name <app-name> --super-admin <email-or-uid>.
VEADK_STUDIO_ADMINS and VEADK_STUDIO_DEVELOPERS entries to Identity users and preserve their roles. Only after migration succeeds are the old role environment values cleared. Unmatched or ambiguous entries and insufficient permissions stop migration and retain the old configuration. Empty legacy lists preserve the all-admin default; with explicit lists, unlisted users remain regular users. Existing admins are never automatically promoted to super admin.
veadk studio --admin ... --developer ...; deploy no longer accepts these options.
Local session ownership
When Studio is running with OAuth or gateway authentication, local ADK session reads, creates, updates, and deletes, as well as agent run requests, are bound to the signed-in identity. A user can only access sessions that belong to their own identity; matching is case-insensitive and considers the username, email, and other identifiers in the sign-in token. Requests that target local sessions without a trusted signed-in identity receive a 401. A non-admin user who attempts to access another user’s sessions receives a 403.View system information
After signing in, the account menu at the bottom of the sidebar offers a “System info” entry. Selecting it opens the system information page over the current page, which displays the Studio version, storage, sandbox information, and user pools. The back button in the top-left corner of the page returns to the page you were on before opening System info; the previous page is preserved. The TOS bucket, sandbox Tools, and user pools each provide a link that opens the corresponding page in the cloud console in a new tab. This page is available only to users with the admin or super admin role, and all resource identifiers are read-only; administrators can update sandbox Tools that have available image updates (see Sandbox information).General
Displays the Studio “Current version”. When Studio is started locally or built and deployed from source, the version is the installed VeADK version. When Studio is switched to a cloud Frontend release, the corresponding release version is shown. If no version is available, ”—” is displayed.Storage
Displays the TOS address used by Studio persistent storage. WhenVEADK_STUDIO_TOS_BUCKET and VEADK_STUDIO_TOS_REGION are configured, the bucket access address is shown, for example veadk-studio-<account ID>.tos-cn-beijing.volces.com; clicking the address opens the bucket in the cloud console. When not configured, “Not configured” is displayed.
Sandbox information
Lists the sandbox Tools configured in Studio and their IDs, including Codex Sandbox (SANDBOX_CHAT_CODEX), DeepSeek Harness Sandbox (SANDBOX_CHAT_CODEX), OpenClaw Sandbox (SANDBOX_CHAT_OPENCLAW), Hermes Sandbox (SANDBOX_CHAT_HERMES), Dev Sandbox (SANDBOX_DEV), and Studio Sandbox (STUDIO_WORKSPACE_TOOL_ID), shown in a fixed order. The Studio Sandbox is used for code projects and is a Tool with persistent snapshots enabled (StudioEnv type on BytePlus, Private type on Volcengine). DeepSeek Harness Sandbox shares the same AgentKit CodeEnv Tool as Codex Sandbox (SANDBOX_CHAT_CODEX), so the two display the same Tool ID. Configured Tool IDs provide a link to the corresponding Tool detail page in the cloud console. Tools without a configured ID show “Not configured”.
Sandbox image update
The sandbox information area includes a “Check for updates” button at the top. When clicked, the Studio server uses the configured Volcengine or BytePlus credentials to query the Tool catalog for the current cloud provider and region, retrieving the latest published images for each prebuilt sandbox Tool type and comparing them against the images currently in use by each Tool. Each configured Tool displays the version tags of its current image and the latest image; when the current image differs from the latest, an update indicator is shown. The image catalog is cached on the server for 60 seconds and refreshed before an update is applied. Administrators can update prebuilt sandbox Tools whose status is “Ready” and that have an available update. An available update is either a mismatched image version or, for Codex-type Tools, a need to backfill model environment variables. Clicking the update button next to a Tool submits an update request to the cloud provider, setting the Tool’s image to the latest published version. For Codex-type Tools, if the Tool’s environment variables are missingMODEL_AGENT_API_KEY or MODEL_AGENT_BASE_URL while both CODEX_API_KEY and CODEX_BASE_URL are present, the missing MODEL_AGENT_* variables are backfilled from the corresponding CODEX_* variables during the update; existing values are not overwritten. After the update is submitted, Studio polls the Tool status until it returns to “Ready” with the updated image, then displays the result next to the Tool. Keys are never sent to the browser at any point.
Private (Volcengine) and StudioEnv (BytePlus) Tool types used by the Studio Sandbox do not have corresponding prebuilt published images and cannot be updated through this feature.CODEX_API_KEY or CODEX_BASE_URL and cannot have its model environment variables backfilled, an error message appears next to the Tool. Add the missing variables to the Tool in the cloud console first, then refresh the System info page to re-check.