This release is a pre-release and may not be stable for production use.
databricks-mason
Mason is an experimental CLI for Databricks custom agent preview APIs and deployments. It manages memory, sessions, tracing, and deployments from one authenticated command.
The underlying APIs are in preview and may need workspace enablement.
Installation
From PyPI:
pip install databricks-mason
From source:
pip install 'git+https://github.com/databricks/databricks-ai-bridge.git#subdirectory=integrations/mason'
For tracing commands, install Mason with tracing extras:
pip install 'databricks-mason[tracing]'
Shell completion
Add this to ~/.zshrc:
eval "$(_MASON_COMPLETE=zsh_source mason)"
Authentication
Mason uses Databricks authentication. Ask Mason to authenticate and remember a named profile:
mason login --profile <profile>
mason sessions stores list
mason login validates existing credentials first. If credentials are missing or rejected in
an interactive terminal, Mason runs databricks auth login --profile <profile>, revalidates the
profile, and stores the selection in ~/.mason/config.json. This browser-based setup requires
the Databricks CLI. In non-interactive environments, authenticate the profile before running
Mason. mason logout forgets the saved selection without revoking the underlying credentials.
If Databricks SDK default authentication is already configured, you can skip mason login.
You can also pass the global --profile/-p option before an individual command, for example
mason --profile <profile> mcp list. Use --output json for scripting.
Python SDK
The same memory and session APIs are available programmatically through
MasonClient, which authenticates exactly like the CLI (a .databrickscfg profile
or the SDK's default resolution):
from databricks_mason import MasonClient
client = MasonClient(profile="my-workspace") # or MasonClient() for default auth
store = client.create_memory_store("my-store")
print(store.name, store.display_name) # typed attribute access
client.create_memory_entry("my-store", actor_id="alice", path="/notes/1.md", content="hi")
for entry in client.list_memory_entries("my-store", actor_id="alice").entries:
print(entry.path, entry.content)
Each method maps to one /api/agents/v1 operation. Responses come back as typed
models (MemoryStore, Session, SessionItemList, ...) that expose attribute
accessors (store.name) while remaining plain dicts underneath — so store["name"],
json.dumps(store), and any new server-side fields keep working. API errors raise
databricks_mason.AgentCliError. Deployment, sandbox, and tracing remain CLI-only.
Commands
mason [-p <profile>] [-o text|json]
login [--profile P]
logout
init [--framework openai|langgraph] [--disable-chat-app]
[--profile P] [--repo URL] [--ref REF] [directory]
dev [--source PATH] [--prepare-environment] [--app-port PORT]
[--memory/-m N] [--session/-s N]
[--with-traces C.S] [--no-create-stores]
memory
stores create | list | get | update | delete
entries create | get | list | search | update | delete
sessions create | list | get | update | delete | fork
stores create | list | get | update | delete
items list | append | pop | clear
tracing
setup --catalog C --schema S [--experiment E]
list | get | instrument
mcp
list [--schema CATALOG.SCHEMA]
tools
add sandbox --scope SCOPE [--scope SCOPE ...] [--source PATH]
add mcp SERVICE [--name NAME] [--source PATH]
add uc-function FUNCTION [--name NAME] [--source PATH]
add python NAME [--source PATH]
list [--source PATH]
deploy <name> --source PATH [--memory/-m N]
[--session/-s N] [--actor-id ID]
[--with-traces C.S] [--no-create-stores]
deployments list | get | logs | start | stop | delete
Command help
Use the conventional help flag at any command level. Every command's help includes runnable examples:
mason --help
mason deploy --help
mason sessions items append --help
For the shortest path from a blank directory to a running and deployed agent:
mason login --profile <profile>
mason init my-agent
cd my-agent
mason dev
mason deploy my-agent
Agent tools
mason init writes portable tool intent to agent.toml and template provenance to
.mason/project.toml. The manifest runtime is currently implemented only by the in-repository
agent-langgraph template; mason tools add fails explicitly for other frameworks until they
provide an adapter at the same runtime seam.
Remote tools update only agent.toml; they do not generate framework source. The LangGraph runtime
loads the manifest and materializes its native MCP tools when the agent runs, so a direct manifest
edit and a CLI edit have the same behavior:
mason tools add sandbox --scope table:samples.nyctaxi.trips
mason tools add mcp system.ai.web_search
mason tools add uc-function catalog.schema.lookup_ticket
mason tools add python lookup-ticket
mason tools remove mcp system.ai.web_search
mason tools list
For MCP services, the remove command accepts the same service name as the add command. You can also
remove any binding by the ID shown in mason tools list, for example mason tools remove web_search. Removal updates only agent.toml; Python source and test files remain user-owned.
Discover the MCP Services available to your user before adding one. By default Mason lists the
Databricks-managed services in system.ai; pass --schema catalog.schema for another Unity Catalog
schema. Text output includes a copyable add command, while --output json returns normalized service
records for scripts:
mason mcp list
mason mcp list --schema main.tools
The Python command additionally creates user-owned agent/tools/<name>.py and
tests/tools/test_<name>.py files using the LangGraph-native @tool decorator. mason dev and
mason deploy preserve agent.toml; they do not generate or patch agent source.
Sandbox scopes default to read-only access. Repeat --scope to allow more than one resource, use
volume: or workspace: for those resource types, and use --permission read_write only when the
agent needs writes. Every sandbox call carries this fixed downscope in MCP _meta, outside the tool
arguments controlled by the model.
Initialize the chat app demo
The chat app is a LangGraph-specific init overlay, not a command that mutates an existing project.
It is included by default for --framework langgraph; pass --disable-chat-app to scaffold the
API-only backend instead.
mason init --framework langgraph \
--profile <profile> \
./my-agent
cd ./my-agent
uv run start-server
The chat app includes synchronous, SSE streaming, background polling, Session Store, Memory Store,
and HITL resume UI. The framework-specific overlay adds ui/, runtime/ui.py, the UI-enabled
runtime/main.py, and UI tests.
For the full deployed demo, connect both managed stores:
mason --profile <profile> deploy mason-agent-demo --source . \
--session mason-demo-sessions \
--memory mason-demo-memory \
--actor-id alice
(Missing stores are created automatically; pass --no-create-stores to require they already exist.)
The Databricks Apps __Host-databricks-app-router cookie is both the sticky routing key and the
application session id. The browser sends it automatically; API clients must reuse it as a cookie.
Request bodies never carry session_id. A localhost-only mason-local-session cookie provides the
same behavior outside Databricks Apps. TODO: move to X-Routing-Key when Apps supports it.
The generated README.md documents every request the client makes: config discovery, sync and SSE
invocations, background submission and polling, session transcript loading, HITL resume, and memory
entry operations. Capability colors are automatic from /api/demo/config; only the
sync/streaming/background transport selector is manual.
Metadata
Release files for databricks-mason 0.1.3.dev0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| databricks_mason-0.1.3.dev0.tar.gz | 83.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| databricks_mason-0.1.3.dev0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 190.0 kB
Release files / databricks_mason-0.1.3.dev0.tar.gz
| Download URL | databricks_mason-0.1.3.dev0.tar.gz |
|---|---|
| Size | 83.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f87d60e418b2469d70b841e62657d80165608d357dada8f3de838fe04ef699a0
|
|
BLAKE2b-256 checksum How to use checksums |
a93dda46a187e7b46ee73166d94ec5fc8bab49be93c342b669256c6bc1dc6ae1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / databricks_mason-0.1.3.dev0-py3-none-any.whl
| Download URL | databricks_mason-0.1.3.dev0-py3-none-any.whl |
|---|---|
| Size | 106.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d71195da54e8977d042c2c95c28e1317c31afc44376ec619cacf3fd9c8ca8d3d
|
|
BLAKE2b-256 checksum How to use checksums |
b2c399b5221a12c71be45c19716a5833c415a8a2734f3b783051899248ad6305
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|