Minilake is a free, local Databricks API emulator — a single-developer tool for testing databricks-sdk/Terraform code against real SQL, real Delta Lake, and real Job execution, without paying for cloud compute.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · streamable-http · http counts 67 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
cancel_run
-
cancel_statement
-
create_catalog
-
create_cluster
-
create_directory
-
create_job
-
create_schema
-
create_secret_scope
-
create_table
-
create_volume
-
create_warehouse
-
dbfs_delete
-
dbfs_list
-
dbfs_mkdirs
-
dbfs_put
-
dbfs_read
-
delete_catalog
-
delete_file
-
delete_job
-
delete_schema
-
delete_secret
-
delete_secret_scope
-
delete_table
-
delete_volume
-
delete_warehouse
-
delete_workspace_object
-
describe_catalog_tree
-
describe_table
-
download_file
-
get_catalog
-
get_cluster
-
get_job
-
get_run
-
get_run_output
-
get_statement
-
get_warehouse
-
get_workspace_file
-
get_workspace_status
-
health
-
list_catalogs
-
list_clusters
-
list_directory
-
list_jobs
-
list_runs
-
list_schemas
-
list_secret_scopes
-
list_secrets
-
list_services
-
list_tables
-
list_volumes
-
list_warehouses
-
list_workspace
-
make_workspace_dirs
-
put_secret
-
put_workspace_file
-
reset_state
-
run_job
-
run_python_script
-
run_sql
-
seed_table
-
setup_fixture
-
start_cluster
-
start_warehouse
-
stop_warehouse
-
table_exists
-
terminate_cluster
-
upload_file
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit fa44c67 · analyzer v33 · 1w ago
skills & prompt files 3
- agent-rules dmux-minilake-fa44c67/.claude/CLAUDE.md
- agent-rules dmux-minilake-fa44c67/ui/AGENTS.md
- agent-rules dmux-minilake-fa44c67/ui/CLAUDE.md
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 204
filesystem 19
- fs dmux-minilake-fa44c67/src/minilake/admin.py :4
import shutil - fs dmux-minilake-fa44c67/src/minilake/app.py :9
from pathlib import Path - fs dmux-minilake-fa44c67/src/minilake/cli.py :110
from pathlib import Path - fs dmux-minilake-fa44c67/src/minilake/config.py :2
from pathlib import Path - fs dmux-minilake-fa44c67/src/minilake/docker_executor.py :19
import shutil - fs dmux-minilake-fa44c67/src/minilake/duckdb_pool.py :5
from pathlib import Path - fs dmux-minilake-fa44c67/src/minilake/notebook.py :18
import shutil - fs dmux-minilake-fa44c67/src/minilake/persistence.py :10
from pathlib import Path - fs dmux-minilake-fa44c67/src/minilake/services/dbfs.py :11
import shutil - fs dmux-minilake-fa44c67/src/minilake/services/files.py :10
from pathlib import Path - fs dmux-minilake-fa44c67/src/minilake/services/sql_statements.py :10
from pathlib import Path - fs dmux-minilake-fa44c67/src/minilake/services/unity_catalog.py :4
import shutil - fs dmux-minilake-fa44c67/src/minilake/services/workspace.py :11
import shutil - fs dmux-minilake-fa44c67/src/minilake/tls.py :21
from pathlib import Path - fs (weak) dmux-minilake-fa44c67/tests/conftest.py :9
from pathlib import Path - fs (weak) dmux-minilake-fa44c67/tests/test_config.py :4
from pathlib import Path - fs (weak) dmux-minilake-fa44c67/tests/test_docker_executor.py :10
from pathlib import Path - fs (weak) dmux-minilake-fa44c67/tests/test_packaging.py :8
import pathlib - fs (weak) dmux-minilake-fa44c67/tests/test_persistence.py :14
import shutil
shell / exec 4
- shell dmux-minilake-fa44c67/src/minilake/docker_executor.py :20
import subprocess - shell dmux-minilake-fa44c67/src/minilake/notebook.py :20
import subprocess - shell (weak) dmux-minilake-fa44c67/tests/conftest.py :6
import subprocess - shell (weak) dmux-minilake-fa44c67/tests/test_persistence.py :16
import subprocess
network 14
- net dmux-minilake-fa44c67/src/minilake/mcp/client.py :3
Requests are routed through the app's own ASGI stack (`httpx.ASGITransport`) rather than - net dmux-minilake-fa44c67/src/minilake/notebook.py :19
import socket - net (weak) dmux-minilake-fa44c67/tests/conftest.py :8
import urllib.request - net (weak) dmux-minilake-fa44c67/tests/error_handling/test_400_bad_request.py :16
import requests - net (weak) dmux-minilake-fa44c67/tests/error_handling/test_501_not_implemented.py :9
import urllib.request - net (weak) dmux-minilake-fa44c67/tests/mcp_server/conftest.py :13
import httpx - net (weak) dmux-minilake-fa44c67/tests/test_admin.py :3
import urllib.request - net (weak) dmux-minilake-fa44c67/tests/test_golden_path.py :300
import urllib.request - net (weak) dmux-minilake-fa44c67/tests/test_notebook.py :10
import urllib.error - net (weak) dmux-minilake-fa44c67/tests/test_persistence.py :15
import socket - net (weak) dmux-minilake-fa44c67/tests/test_sql_statements.py :8
import requests - net (weak) dmux-minilake-fa44c67/tests/test_ui_assets.py :11
import requests - net (weak) dmux-minilake-fa44c67/tests/unity_catalog/test_spark_catalog_protocol.py :17
import requests - net (weak) dmux-minilake-fa44c67/tests/unity_catalog/test_tables.py :98
import requests
secrets 2
- secrets (weak) dmux-minilake-fa44c67/tests/test_docker_executor.py :57
script.write_text("import os\nprint('SECRET=' + os.environ.get('MY_SECRET', 'MISSING'))\n") - secrets (weak) dmux-minilake-fa44c67/tests/test_jobs.py :366
b"import os\nprint('MY_API_KEY=' + os.environ.get('MY_API_KEY', 'MISSING'))\n",
tool registrations 67
- health dmux-minilake-fa44c67/src/minilake/mcp/tools/admin.py :11
- list_services dmux-minilake-fa44c67/src/minilake/mcp/tools/admin.py :16
- reset_state dmux-minilake-fa44c67/src/minilake/mcp/tools/admin.py :25
- create_cluster dmux-minilake-fa44c67/src/minilake/mcp/tools/clusters.py :21
- list_clusters dmux-minilake-fa44c67/src/minilake/mcp/tools/clusters.py :43
- get_cluster dmux-minilake-fa44c67/src/minilake/mcp/tools/clusters.py :48
- start_cluster dmux-minilake-fa44c67/src/minilake/mcp/tools/clusters.py :53
- terminate_cluster dmux-minilake-fa44c67/src/minilake/mcp/tools/clusters.py :58
- describe_catalog_tree dmux-minilake-fa44c67/src/minilake/mcp/tools/composite.py :19
- seed_table dmux-minilake-fa44c67/src/minilake/mcp/tools/composite.py :58
- setup_fixture dmux-minilake-fa44c67/src/minilake/mcp/tools/composite.py :126
- dbfs_put dmux-minilake-fa44c67/src/minilake/mcp/tools/dbfs.py :12
- dbfs_read dmux-minilake-fa44c67/src/minilake/mcp/tools/dbfs.py :28
- dbfs_list dmux-minilake-fa44c67/src/minilake/mcp/tools/dbfs.py :39
- dbfs_delete dmux-minilake-fa44c67/src/minilake/mcp/tools/dbfs.py :44
- dbfs_mkdirs dmux-minilake-fa44c67/src/minilake/mcp/tools/dbfs.py :49
- upload_file dmux-minilake-fa44c67/src/minilake/mcp/tools/files.py :11
- download_file dmux-minilake-fa44c67/src/minilake/mcp/tools/files.py :26
- delete_file dmux-minilake-fa44c67/src/minilake/mcp/tools/files.py :32
- list_directory dmux-minilake-fa44c67/src/minilake/mcp/tools/files.py :38
- create_directory dmux-minilake-fa44c67/src/minilake/mcp/tools/files.py :43
- create_job dmux-minilake-fa44c67/src/minilake/mcp/tools/jobs.py :32
- list_jobs dmux-minilake-fa44c67/src/minilake/mcp/tools/jobs.py :49
- get_job dmux-minilake-fa44c67/src/minilake/mcp/tools/jobs.py :54
- delete_job dmux-minilake-fa44c67/src/minilake/mcp/tools/jobs.py :59
- run_job dmux-minilake-fa44c67/src/minilake/mcp/tools/jobs.py :64
- get_run dmux-minilake-fa44c67/src/minilake/mcp/tools/jobs.py :84
- get_run_output dmux-minilake-fa44c67/src/minilake/mcp/tools/jobs.py :89
- list_runs dmux-minilake-fa44c67/src/minilake/mcp/tools/jobs.py :94
- cancel_run dmux-minilake-fa44c67/src/minilake/mcp/tools/jobs.py :99
- run_python_script dmux-minilake-fa44c67/src/minilake/mcp/tools/jobs.py :108
- create_secret_scope dmux-minilake-fa44c67/src/minilake/mcp/tools/secrets.py :11
- list_secret_scopes dmux-minilake-fa44c67/src/minilake/mcp/tools/secrets.py :16
- delete_secret_scope dmux-minilake-fa44c67/src/minilake/mcp/tools/secrets.py :21
- put_secret dmux-minilake-fa44c67/src/minilake/mcp/tools/secrets.py :26
- list_secrets dmux-minilake-fa44c67/src/minilake/mcp/tools/secrets.py :37
- delete_secret dmux-minilake-fa44c67/src/minilake/mcp/tools/secrets.py :42
- run_sql dmux-minilake-fa44c67/src/minilake/mcp/tools/sql.py :32
- get_statement dmux-minilake-fa44c67/src/minilake/mcp/tools/sql.py :80
- cancel_statement dmux-minilake-fa44c67/src/minilake/mcp/tools/sql.py :85
- create_catalog dmux-minilake-fa44c67/src/minilake/mcp/tools/unity_catalog.py :13
- list_catalogs dmux-minilake-fa44c67/src/minilake/mcp/tools/unity_catalog.py :20
- get_catalog dmux-minilake-fa44c67/src/minilake/mcp/tools/unity_catalog.py :25
- delete_catalog dmux-minilake-fa44c67/src/minilake/mcp/tools/unity_catalog.py :30
- create_schema dmux-minilake-fa44c67/src/minilake/mcp/tools/unity_catalog.py :37
- list_schemas dmux-minilake-fa44c67/src/minilake/mcp/tools/unity_catalog.py :45
- delete_schema dmux-minilake-fa44c67/src/minilake/mcp/tools/unity_catalog.py :50
- create_table dmux-minilake-fa44c67/src/minilake/mcp/tools/unity_catalog.py :57
- list_tables dmux-minilake-fa44c67/src/minilake/mcp/tools/unity_catalog.py :100
- describe_table dmux-minilake-fa44c67/src/minilake/mcp/tools/unity_catalog.py :108
- table_exists dmux-minilake-fa44c67/src/minilake/mcp/tools/unity_catalog.py :120
- delete_table dmux-minilake-fa44c67/src/minilake/mcp/tools/unity_catalog.py :125
- create_volume dmux-minilake-fa44c67/src/minilake/mcp/tools/unity_catalog.py :132
- list_volumes dmux-minilake-fa44c67/src/minilake/mcp/tools/unity_catalog.py :152
- delete_volume dmux-minilake-fa44c67/src/minilake/mcp/tools/unity_catalog.py :160
- create_warehouse dmux-minilake-fa44c67/src/minilake/mcp/tools/warehouses.py :11
- list_warehouses dmux-minilake-fa44c67/src/minilake/mcp/tools/warehouses.py :21
- get_warehouse dmux-minilake-fa44c67/src/minilake/mcp/tools/warehouses.py :26
- start_warehouse dmux-minilake-fa44c67/src/minilake/mcp/tools/warehouses.py :31
- stop_warehouse dmux-minilake-fa44c67/src/minilake/mcp/tools/warehouses.py :40
- delete_warehouse dmux-minilake-fa44c67/src/minilake/mcp/tools/warehouses.py :45
- put_workspace_file dmux-minilake-fa44c67/src/minilake/mcp/tools/workspace.py :12
- get_workspace_file dmux-minilake-fa44c67/src/minilake/mcp/tools/workspace.py :37
- list_workspace dmux-minilake-fa44c67/src/minilake/mcp/tools/workspace.py :48
- get_workspace_status dmux-minilake-fa44c67/src/minilake/mcp/tools/workspace.py :53
- make_workspace_dirs dmux-minilake-fa44c67/src/minilake/mcp/tools/workspace.py :58
- delete_workspace_object dmux-minilake-fa44c67/src/minilake/mcp/tools/workspace.py :63
declared dependencies 14
- mcp@>=1.29,<2
- fastapi@>=0.115
- uvicorn@>=0.30
- pydantic@>=2.11
- pydantic-settings@>=2.3
- duckdb@>=1.0
- python-multipart@>=0.0.9
- aiofiles@>=24.1
- docker@>=7.1
- pyarrow@>=14.0
- cryptography@>=42.0
- pytz@>=2024.1
- jupyterlab@>=4.2,<5
- databricks-sdk@>=0.40
perm:untrusted 1
- untrusted (weak) dmux-minilake-fa44c67/tests/test_ui_assets.py :49
index = requests.get(f"{ui_base}/ui/", timeout=10).text
transport_posture 2
- network-listening, binds all interfaces, no auth detected dmux-minilake-fa44c67/src/minilake/__init__.py :7
run_server(app, host="0.0.0.0", port=8000, ssl=False) - network-listening, binds all interfaces, no auth detected dmux-minilake-fa44c67/src/minilake/cli.py :170
run_server(app, host="0.0.0.0", port=8000, ssl=False)