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 local CLI always uses Volcengine.
Customize branding
Use--site-title to set a system name of up to six 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, while the system name becomes the browser title. Omitting --site-title uses the default VeADK 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.
Create an agent
- On Add Agent, select Custom. Intelligent, template, and workflow entries are not available.
- 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.
- 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.
Resource pickers in custom creation (such as agent centers and knowledge-base collections) support local keyword filtering: type in the dropdown to filter the currently loaded options. Filtering applies only to the loaded list and does not change the region, project scope, or refresh behavior.
When deployment enters the build-image stage, Studio streams build logs in real time within the deployment progress card. Logs are redacted and length-bounded on the server before being sent to the browser. The panel shows the sync status (syncing, synced, or read failed) and line count, and can be expanded, collapsed, and copied; on a build failure the failure detail is appended to the log. Log syncing depends on the Volcengine credentials used for deployment; if logs cannot be read, the panel shows a failed status without interrupting the deployment. Both custom creation and code-package deployment support this.
When deploying to AgentKit, the root agent description is automatically normalized to a Runtime-compliant single-line description (at most 255 bytes, with line breaks, control characters, and unsafe symbols removed); the full description is kept in the project and is only used to produce the Runtime description. If the normalized description is rejected by Runtime, Studio retries creation without the description, leaving other configuration unaffected.
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.
Instance counts must be positive integers, and the minimum cannot exceed the maximum. When the agent’s short-term memory backend is
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.
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.1
Upload the code package
On the Add Agent menu, choose “Add and deploy from a code package” and click the upload area or drag a file to select a
.zip archive. The archive can be up to 50 MB, contain no more than 800 files after extraction, and must include app.py at the root as the AgentKit entry point.2
Review or edit files
After a successful upload, Studio reports the recognized file count and derives a project name from the archive file name (following Google ADK naming rules: starting with an ASCII letter or underscore, containing only ASCII letters, digits, and underscores, never using the reserved name
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.3
Configure deployment
Select the region and network mode in the deployment configuration area, the same as the custom-creation deploy page. Code-package deployment does not show the agent topology or the Feishu channel toggle.
4
Deploy to AgentKit
After selecting “Deploy”, Studio reports progress across four stages: upload code package, build image, create Runtime, and publish service. Each stage reports its completion or failure in the deployment progress area.
Studio sanitizes the archive: it ignores
__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. app.py must be in the root after the wrapping directory is removed.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; 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.
Local uploads no longer enforce
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.When adding a skill from AgentKit SkillSpace, Studio downloads
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.
The generated result replaces the current canvas and property configuration. When the canvas has unsaved changes, Studio asks for confirmation before continuing.
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.
The generated configuration does not assign an enterprise knowledge-base search tool to an LLM agent. Memory, knowledge base, and tracing can be enabled on the canvas after generation; see the corresponding component pages for each backend’s full parameters.
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
1
Enter the requirement
Describe the goal in natural language in the input above the build canvas. The input is limited to 8,000 characters.
2
Generate the configuration
Select “smart generate”. The input is dimmed during generation; when it finishes, the new draft is loaded onto the canvas along with a one-sentence summary.
3
Review unresolved items
Check the unresolved-items list in the result and supply the actual resources or identifiers on the canvas as needed.
4
Adjust and test
Review and edit the configuration as in custom creation, then generate the project and start a temporary test, download a ZIP, or deploy to AgentKit.
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 Volcengine credentials that can access AgentKit. 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.
1
Configure the root agent
Create an LLM or orchestrator root agent and complete the required model, description, and instruction settings.
2
Add a remote-agent node
In the agent structure, add a sub-agent to the root or another local agent, then select Remote Agent as its type. The remote-agent type is unavailable on the root node.
3
Select an agent center
Studio initially lists centers visible to the current account in the
default project in Beijing. For another region, set the region under More options before selecting a center from the dropdown. Use the refresh button to reload the list.4
Configure discovery scope
Set the recall count and OpenAPI endpoint when needed. The remote agent’s name, description, and capabilities come from the Agent Card returned by the center, so you do not enter a separate name or A2A URL.
5
Test the invocation
Generate the project, start a temporary test, and enter a request that requires a specialization available in the selected center. If the response uses information returned by a matching agent in the center, discovery and invocation are working.
For example, create an LLM root agent named
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 Beijing. 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
The temporary test process is retained for 1,800 seconds by default and can be changed with
--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.
Test runs normalize HTTP MCP tool endpoints configured on a generated agent: a URL not ending in
/mcp is appended with /mcp, and tool discovery is validated over Streamable HTTP. If Studio cannot reach the MCP server to discover tools, the test returns an error prompting you to confirm the URL points to the actual MCP endpoint (typically ending in /mcp) and check the token; the original URL saved on the canvas is not modified.Configure a knowledge base
After enabling a knowledge base for an agent, select one of these backends in Studio:
Studio does not offer the
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.
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.
Both values apply to local debug runs and deployed runtimes, and the generated
.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.This presentation applies to both local sub-agents and remote agents. A remote agent can only be a sub-agent and cannot be the root agent.
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:
When you select VPC or Public + VPC, you must provide the VPC ID and subnet ID.
A private VPC runtime does not return a public data-plane address after deployment. Studio reaches it through the server-side runtime proxy, and the data-plane API key stays server-side and is never delivered to the browser. This is the same server-side runtime proxy described in “Select a cloud Runtime”.
After a deployment completes, Studio automatically connects to the newly created runtime. If the runtime deployed successfully but Studio cannot reach it yet (the gateway domain may still be propagating, or the current network or DNS cannot access the runtime), the deployment task is marked “Deployed, not yet connected” and the progress card with its message stays visible. You can retry the connection from Manage Agents.
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 only their own. 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.” 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.
Before deleting, Studio shows a confirmation dialog listing the agents or drafts that will be removed; deletion only proceeds after confirmation. While deletion is in progress, the affected agents are temporarily hidden from the list. If the deleted agent is the one in use for the current conversation, Studio clears the current selection and returns to the agent management page.
When a build or deployment stage fails, Studio shows the complete error message returned by the service, expanded by default and copyable, so you can locate the problem directly. Deployment and update failures can also be retried from the error panel.
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.For security, drafts strip MCP tool auth tokens and deployment environment values before they are saved. These must be re-entered and are not restored after a page reload.
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.1
Select a deployed agent
In the agent workspace, select a deployed agent. Studio reads the agent’s name, description, model, instruction, tools, and sub-agent structure from the Runtime and loads them into an editable draft.
2
Modify the configuration
Adjust the model, instruction, tools, skills, or sub-agent structure on the canvas or in the configuration panel, using the same editing capabilities as when creating an agent.
3
Update and publish
Select “Update and publish”. Studio reports progress through the prepare, build-image, deploy, and publish stages; the deploy stage reuses the existing Runtime identifier and publishes an incremented version.
4
Verify the update
After the update completes, the agent’s version number increments in the workspace and its status returns to published. Connect the Runtime from the chat view to verify the new configuration.
Cancelling a deployment task during an update does not destroy the existing Runtime; the previous version remains available. Only when creating a brand-new deployment does cancelling the task clean up the unfinished Runtime resources.
admin can update all Studio-managed Runtimes, developer can update only their own, and regular users cannot update.
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.Integration methods are confirmed at runtime by read-only probes issued when the tab opens; only confirmed protocols and addresses are shown. Protocols the Runtime does not expose appear as unavailable, and Studio never invents unconfirmed endpoints.
Supported protocols
While probing, Studio shows a loading state. If a probe fails due to network or authentication issues, the tab shows an error with a “Retry” button. When the Runtime does not expose a protocol, that protocol appears as unavailable without affecting the other one.
Authentication and API Key
The tab shows the Runtime’s current authentication type:
When the authentication type is API Key, the tab shows an API Key field. For security, the key is masked as
**** 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:
The examples illustrate the calling convention only. Actual endpoints, app names, and authentication depend on the probe results; when no authentication is enabled, the
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 tabs at the top, defaulting to General agents:
The General agents list loads the signed-in user’s own Runtimes across all regions and automatically loads the next page as you scroll to the bottom of the list, showing “All agents loaded” when complete. Use the search box at the top to filter the loaded agents by name.
Each agent card shows the Runtime name and creation time. 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 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.
The agent directory lists only the Runtimes created by the signed-in user and is not filtered by region. To browse other users’ or all Runtimes, use the agent selector in the top bar or the management page; the visible scope depends on role permissions.
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.
The Runtime details tab can display runtime environment-variable values. Restrict Studio to authorized users and prefer the platform’s secret-management features.
- 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.
Use built-in agents and Skill creation
The new-conversation view provides three modes visible to all users:- 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, which starts a multi-turn conversation in an independent AgentKit CodeEnv Session. Exiting deletes the cloud Session and does not add it to ordinary session history.
- Skill creation: generates two Skill candidates in parallel. You can compare and preview the results, download a ZIP, or add one to AgentKit.
developer and admin users. Each candidate uses a separate Session, and Studio checks its SKILL.md, file count, size, and paths before packaging. Candidate Sessions expire after 30 minutes and are deleted immediately when the user starts over or leaves the task. If candidate or credential provisioning fails, Studio displays a credential-safe error that helps identify Tool-state, region, or model-credential problems.
Follow-up messages in an ordinary conversation continue to use the existing message history for that session; only a new session starts with empty context. When a Runtime cannot be connected, Studio distinguishes insufficient permission, an unreachable Agent Server, a private unreachable Runtime, and authentication failure, and displays the corresponding troubleshooting direction.
In cloud mode, Studio does not auto-select the first available agent. Before starting a new conversation, connect a Runtime from the agent selector at the top of the chat page. Starting a new chat without a selected agent prompts you to choose one first and opens the agent management page.
Local configuration
Before using built-in agents or Skill creation locally, prepare two AgentKit CodeEnv Tools in theReady state and configure their IDs:
When creating a Session or looking up the Tool for built-in agents or Skill creation, Studio first tries the region set by
AGENTKIT_SANDBOX_REGION (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.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.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.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.
The “Created by” field in the sandbox session list shows the signed-in user’s display name (OAuth email or local username), making it easier to distinguish session ownership in multi-user deployments. When no display name is available, the internal user identifier is used instead.
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.
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. After deployment, the command registers the public callback with the user-pool client and updates the application configuration.
Prepare the user-pool UID, user-pool client UID, and suitable Volcengine credentials, then run:
--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.
Deployment credentials are resolved in the following order: explicit --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 and VeFaaS application ID. Opening the URL redirects the user through VeIdentity login.
--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. Deployment also locates the 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. --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.
When --sandbox-chat-codex-tool-id and --sandbox-skill-creator-tool-id are omitted, deployment creates two independent AgentKit CodeEnv Tools in the region selected by --region, one for built-in agents and one for Skill creation. 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.
In-app updates
veadk studio deploy uses the veadk-studio TOS bucket in the deployment region as its immutable release channel by default, so administrators can update the frontend and Python backend together from the navbar without extra options. Use --studio-update-bucket, --studio-update-region, and --studio-update-prefix (or the matching VEADK_STUDIO_UPDATE_BUCKET, VEADK_STUDIO_UPDATE_REGION, and VEADK_STUDIO_UPDATE_PREFIX environment variables) to override the default release channel.
Studio checks for updates every three minutes and lists available versions with their change notes. After an administrator confirms an update, Studio verifies the complete release bundle, replaces the Python backend and frontend assets together, and re-releases the existing Application. The Application and Function IDs, public URL, SSO client, and server-side secrets are preserved.
In-app updates are available only to signed-in users with the
admin role. They update Studio’s own VeFaaS Function and do not affect deployed AgentKit Runtimes.Deployment options
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. 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 two CodeEnv Tool IDs change only when their options are explicitly supplied.
Studio roles and Runtime access
--admin and --developer each accept a comma-separated list of local usernames or OAuth email addresses. Whitespace is ignored and matching is case-insensitive. If the same identity appears in both lists, admin takes precedence. For a local Studio:
VEADK_STUDIO_ADMINS and VEADK_STUDIO_DEVELOPERS. Use the same options for a deployed Studio:
admin, granting full Studio capabilities and visibility into all Runtimes. Supplying either list enables role-based access control; an identity that does not match either list is a regular user.
Studio restricts Runtime visibility according to the signed-in account. Existing Runtimes without a recorded creator are visible only to
admin users.