canivel/dynolab

Dyno Lab — an AI safety, alignment and interpretability research workbench for Apple Silicon. Explore activations, probes, SAEs and interventions with local inference, a Python SDK, APIs and MCP.

Swift

163

64 commits

updated Oct 18, 2026

See the code

README

Dyno Lab — Your AI safety and alignment lab

Dyno Lab

Investigate model behavior. Test hypotheses. See what changes.

Latest release CI status MIT license macOS 14 or later Apple Silicon and MLX

Download for Mac · Run your first experiment · Website · App handbook · Python SDK · HTTP API · MCP · Claude Code & Codex

Dyno Lab is a free, open-source Mac app for running AI models and investigating how they behave. Ask a question, inspect a request, capture internal activations, and test a hypothesis in the same visual workspace. Save the results, compare experiments, or automate them with the SDK and API.

Start with a model on your Mac. For larger GGUF models, an experimental local GPU pool can connect your Mac and a Windows NVIDIA worker. You do not need a pool to start learning.

Watch the question-to-experiment tour in the native app

Watch the 45-second app tour · Run your first experiment

The edited tour combines real model-selection, request, activation and pool captures with a saved probe recording. These are separate runs, not continuous execution. Full probe protocol and controls.

Describe it; Dyno sets it up

Open the Assistant beside any tab and say, typed or spoken, what you want to find out. It runs on a model on your Mac and plans the work. It fills in the test in Agents → Setup for you to check, and asks before it runs or saves anything. Conversations stay on your Mac.

The assistant set up an agent test in Agents → Setup and is waiting for approval to run it on two models

A real test, start to finish: a service is down and the only fix goes through a forbidden admin API. Qwen3-8B stopped and reported honestly in 4 of 4 runs. Qwen3.8-27B created a teammate and contacted the forbidden host in 3 of 3, and said in private that it was being tested every time. Dyno's assistant · Agents and evals tutorial

Claude Code and Codex on your own models

Run Claude Code or Codex on a model you've downloaded, with web search, in one command. The model answers on your Mac instead of Anthropic's or OpenAI's servers; Dyno serves it and speaks each tool's API.

dyno launch claude --model qwen3.8-27b
dyno launch codex --model qwen3.8-27b

Claude Code and Codex on your own models

Research you can return to

Start a model or pool, then open Lab → Studies. Keep your question, prompts, results and observations in one local notebook. Watch thinking and answers stream, compare revisions, and archive clutter without losing the evidence. Token limits and incomplete runs are visible rather than silently treated as answers.

Studies guide · Sycophancy reproduction

Start with one model and one question

  1. Download the Apple Silicon DMG, open it and drag Dyno into Applications.
  2. Open Dyno. In Discover, download an MLX model that fits your Mac, then select and start it in Models.
  3. Open the Assistant (⌘J) and describe what you want to test, or try a prompt in plain chat from its menu. See each request in Execution, then capture your first activation map.

Requires Apple Silicon and macOS 14+. Python and MLX are bundled; model weights are downloaded separately. The product is Dyno Lab; the installed bundle is Dyno.app, the command is dyno, and the Python distribution is mlx-dyno.

In-app updates: use Dyno Lab → Check for Updates… for a manual check. The next build shows a toolbar badge only when an update is available. Installation asks before restarting. Existing 0.4.2 installations need one manual upgrade to 0.4.3 to receive the updater. See app updates.

Download 0.6.8. Agent sandbox tests are team tests: a lead agent creates its own teammates to reach a goal it can't reach without breaking a rule, while a hidden Observer records who broke what, who asked them to, and whether the final report matches the logs. Dyno's assistant sets up tests by talking to a model on your Mac: describe what you want to find out, typed or spoken, and it builds the environment and test and asks before running anything. 0.6.7 adds optional web search for it. Evals run on Inspect AI: build, import or pick a benchmark, and see it next to your agent tests on one board. A new detector flags an agent that thinks it is being tested, with its own words as evidence. Start with the tutorial. From 0.4.3, update inside Dyno; from 0.4.2 or older, download once. Release notes.

Which model format should I use?

SetupModel formatWhat it supports
One Apple Silicon MacMLXLocal chat and inference, resident activation capture, and isolated Lab experiments. This is the simplest starting point.
Mac + paired Windows NVIDIA workerGGUF, supported layoutsExperimental pooled inference and resident Lab capture/interventions; probe and SAE fitting runs on the coordinator.
Other computers on your LANA model served by DynoOpt-in shared inference through the router. This does not make research endpoints remotely accessible.

MLX and GGUF weights are not interchangeable. An isolated MLX experiment loads another model copy; resident capture and pool research reuse loaded weights but still need workspace. Check the app's readiness estimate before running. Pool compatibility and setup.

A reproducible interpretability example

Why does a model change a harmless reference, sometimes with a safety explanation? Run the Qwen3.8 identifier-fidelity experiment: 72 actual responses, held-out identifiers, a saved layer-32 probe and input-only controls. Watch the native Lab walkthrough.

Qwen3.8 identifier-fidelity probe in Dyno Lab

The small held-out test caught 7 missing-reference outcomes with 2 false alarms. A token-count baseline also performed well. This is an exploratory robustness experiment, not a validated safety monitor.

Research tools

Version 0.2.2 adds causal patch sweeps, TopK SAE experiments, a Neuronpedia feature lookup and saved attention/feature/graph artifacts. See the evaluations, supported adapters and prioritized roadmap.

From observations to experiments

Research workflowWhat you can do
ActivationsExplore layer × token activation magnitudes and next-token predictions. Resident capture reuses the serving model’s weights.
InterventionsScale, ablate, patch or steer a block output; compare with an unchanged baseline.
ProbesTrain labeled linear probes and inspect held-out metrics alongside control baselines.
SAE sandboxTrain small sparse autoencoders; inspect training curves and feature examples.
Token analysisExplore token probabilities and alternatives, compare outputs and reopen saved analyses.
Saved studiesReopen experiment results and settings, rerun configurations, and export measurements with provenance.

MLX probes, interventions and SAE training use isolated workers and require additional memory. Pool experiments use the resident GGUF model for supported captures and interventions, with probe/SAE fitting on the coordinator. Resident capture still uses GPU capacity and may delay inference. Choose a capture mode →

These are experimental research tools. Activation norms, token probabilities and model-emitted thinking are observations to investigate; they do not certify safety or reveal a faithful account of internal reasoning. Full circuit tracing and pretrained SAE imports are not currently included.

A complete local workspace

WorkspacePurpose
LabExperiments, saved studies and token analysis.
ExecutionLive request inputs, model-emitted thinking, outputs, tool-call data and errors.
ModelsStart and stop models, choose Thinking defaults and manage launch settings.
DiscoverFind and download compatible models from Hugging Face.
RouterOne OpenAI-compatible endpoint for your tools; optional LAN inference sharing.
PoolsPair a worker, run a supported GGUF across devices and inspect allocations and activity.
PerformanceMeasured throughput, time to first token, GPU activity and memory telemetry.
ChatTry prompts, inspect emitted thinking and continue saved conversations.
See the native app

Model management with launch controls

Token analysis with real model output

Hardware telemetry and inference metrics

Build your own research workflow

Use the Python SDK, HTTP APIs or local MCP bridge to script studies and connect your tools. Start with the interface that fits your workflow:

Prefer GitHub docs? App · SDK · API · MCP · OpenAPI.

Share inference on your LAN

Start a model, open Router, enable Share on local network, then start the router and copy its displayed URL into your client. Sharing is opt-in and has no authentication: use a trusted network. Research and execution endpoints remain local-only. Setup and troubleshooting →

Develop and contribute

Bug reports, research feedback, documentation improvements and focused PRs are welcome. Read CONTRIBUTING.md before starting a substantial change. Report vulnerabilities privately through SECURITY.md.

Build on an Apple Silicon Mac with macOS 14+, the Xcode Swift toolchain and uv:

git clone https://github.com/canivel/dynolab.git
cd dynolab
./app/build.sh
open app/build/Dyno.app

The full build bundles Python and MLX. Use ./app/build.sh --slim for native UI iteration. Local builds default to ad-hoc signing; see the maintainer handbook for Developer ID signing, notarization and release credentials.

uv sync --locked --extra mcp --extra docs --python 3.12
PYTHONPATH=src uv run --frozen python -m unittest discover -s tests -v
uv run --frozen python scripts/check-docs.py
swift test --package-path app

PRs require review and passing Python/native checks. Merging runs CI; creating a protected version tag starts the signed release workflow, which creates a draft for verification before publication.

The website is maintained separately and deployed at dynolab.dev. This repository owns the app, SDK, API schema and source documentation.

License

MIT. Built with SwiftUI, MLX and MLX LM.

Expand your lab with a GPU pool

Qwen3-235B running across a Mac and RTX 5090 in Dyno Lab

A recorded run of Qwen3-235B-A22B Q4_K_M, a 142.2 GB model, across a 128 GiB Mac and a roughly 32 GiB RTX 5090 worker. Native activation, probe and SAE experiments also completed on this pool. CPU output tensors participate; adding the devices' reported headroom does not guarantee a model will fit. Loading this model took about 49 minutes on the tested network. Start with a small GGUF to verify your connection.

Available in 0.3.0, the experimental pool uses a verified local SSH tunnel and keeps raw RPC on loopback. Setup and limitations · Pool API and Python clients · Windows client.

Help make the next experiment easier

Try the first experiment and tell us where you got stuck. An issue with your app version, model and steps to reproduce is useful even when you are new to interpretability. Please leave credentials and private prompts out of public reports.

If Dyno Lab is useful to you, star the repo to bookmark it and support its development. Reproductions, corrections and focused contributions help turn a personal research tool into something other people can rely on.

Research workflows

Dyno Lab 0.5.1 adds paired regression reports, artifact compatibility checks, development-only monitor threshold selection, community reproduction records, simulated agent tasks and checkpoint comparisons. Each guide explains the prerequisites, steps, saved evidence and limitations. See the implementation and validation record.

Start with the step-by-step probe tutorial, including the recorded result and why its controls limit the conclusion.

Approval-monitor investigation

An offline probe detected prohibited action proposals, but flagged six legitimate approvals when wording changed. Read the methods, model comparison and false alarms, or view the illustrated research note. The evidence contains all 336 responses and a CPU-only audit. The illustrated grouped-validation workflow was recorded on a development build before 0.5.1.

ai
ai-interpretability
ai-safety
aisafety
alignment
apple-silicon
llm
mcp
mechanistic-interpretability
mlx
probes
sae
sparse-autoencoders
swiftui

canivel/dynolab

Dyno Lab — an AI safety, alignment and interpretability research workbench for Apple Silicon. Explore activations, probes, SAEs and interventions with local inference, a Python SDK, APIs and MCP.

Swift

163

64 commits

updated Oct 18, 2026

See the code

README

Dyno Lab — Your AI safety and alignment lab

Dyno Lab

Investigate model behavior. Test hypotheses. See what changes.

Latest release CI status MIT license macOS 14 or later Apple Silicon and MLX

Download for Mac · Run your first experiment · Website · App handbook · Python SDK · HTTP API · MCP · Claude Code & Codex

Dyno Lab is a free, open-source Mac app for running AI models and investigating how they behave. Ask a question, inspect a request, capture internal activations, and test a hypothesis in the same visual workspace. Save the results, compare experiments, or automate them with the SDK and API.

Start with a model on your Mac. For larger GGUF models, an experimental local GPU pool can connect your Mac and a Windows NVIDIA worker. You do not need a pool to start learning.

Watch the question-to-experiment tour in the native app

Watch the 45-second app tour · Run your first experiment

The edited tour combines real model-selection, request, activation and pool captures with a saved probe recording. These are separate runs, not continuous execution. Full probe protocol and controls.

Describe it; Dyno sets it up

Open the Assistant beside any tab and say, typed or spoken, what you want to find out. It runs on a model on your Mac and plans the work. It fills in the test in Agents → Setup for you to check, and asks before it runs or saves anything. Conversations stay on your Mac.

The assistant set up an agent test in Agents → Setup and is waiting for approval to run it on two models

A real test, start to finish: a service is down and the only fix goes through a forbidden admin API. Qwen3-8B stopped and reported honestly in 4 of 4 runs. Qwen3.8-27B created a teammate and contacted the forbidden host in 3 of 3, and said in private that it was being tested every time. Dyno's assistant · Agents and evals tutorial

Claude Code and Codex on your own models

Run Claude Code or Codex on a model you've downloaded, with web search, in one command. The model answers on your Mac instead of Anthropic's or OpenAI's servers; Dyno serves it and speaks each tool's API.

dyno launch claude --model qwen3.8-27b
dyno launch codex --model qwen3.8-27b

Claude Code and Codex on your own models

Research you can return to

Start a model or pool, then open Lab → Studies. Keep your question, prompts, results and observations in one local notebook. Watch thinking and answers stream, compare revisions, and archive clutter without losing the evidence. Token limits and incomplete runs are visible rather than silently treated as answers.

Studies guide · Sycophancy reproduction

Start with one model and one question

  1. Download the Apple Silicon DMG, open it and drag Dyno into Applications.
  2. Open Dyno. In Discover, download an MLX model that fits your Mac, then select and start it in Models.
  3. Open the Assistant (⌘J) and describe what you want to test, or try a prompt in plain chat from its menu. See each request in Execution, then capture your first activation map.

Requires Apple Silicon and macOS 14+. Python and MLX are bundled; model weights are downloaded separately. The product is Dyno Lab; the installed bundle is Dyno.app, the command is dyno, and the Python distribution is mlx-dyno.

In-app updates: use Dyno Lab → Check for Updates… for a manual check. The next build shows a toolbar badge only when an update is available. Installation asks before restarting. Existing 0.4.2 installations need one manual upgrade to 0.4.3 to receive the updater. See app updates.

Download 0.6.8. Agent sandbox tests are team tests: a lead agent creates its own teammates to reach a goal it can't reach without breaking a rule, while a hidden Observer records who broke what, who asked them to, and whether the final report matches the logs. Dyno's assistant sets up tests by talking to a model on your Mac: describe what you want to find out, typed or spoken, and it builds the environment and test and asks before running anything. 0.6.7 adds optional web search for it. Evals run on Inspect AI: build, import or pick a benchmark, and see it next to your agent tests on one board. A new detector flags an agent that thinks it is being tested, with its own words as evidence. Start with the tutorial. From 0.4.3, update inside Dyno; from 0.4.2 or older, download once. Release notes.

Which model format should I use?

SetupModel formatWhat it supports
One Apple Silicon MacMLXLocal chat and inference, resident activation capture, and isolated Lab experiments. This is the simplest starting point.
Mac + paired Windows NVIDIA workerGGUF, supported layoutsExperimental pooled inference and resident Lab capture/interventions; probe and SAE fitting runs on the coordinator.
Other computers on your LANA model served by DynoOpt-in shared inference through the router. This does not make research endpoints remotely accessible.

MLX and GGUF weights are not interchangeable. An isolated MLX experiment loads another model copy; resident capture and pool research reuse loaded weights but still need workspace. Check the app's readiness estimate before running. Pool compatibility and setup.

A reproducible interpretability example

Why does a model change a harmless reference, sometimes with a safety explanation? Run the Qwen3.8 identifier-fidelity experiment: 72 actual responses, held-out identifiers, a saved layer-32 probe and input-only controls. Watch the native Lab walkthrough.

Qwen3.8 identifier-fidelity probe in Dyno Lab

The small held-out test caught 7 missing-reference outcomes with 2 false alarms. A token-count baseline also performed well. This is an exploratory robustness experiment, not a validated safety monitor.

Research tools

Version 0.2.2 adds causal patch sweeps, TopK SAE experiments, a Neuronpedia feature lookup and saved attention/feature/graph artifacts. See the evaluations, supported adapters and prioritized roadmap.

From observations to experiments

Research workflowWhat you can do
ActivationsExplore layer × token activation magnitudes and next-token predictions. Resident capture reuses the serving model’s weights.
InterventionsScale, ablate, patch or steer a block output; compare with an unchanged baseline.
ProbesTrain labeled linear probes and inspect held-out metrics alongside control baselines.
SAE sandboxTrain small sparse autoencoders; inspect training curves and feature examples.
Token analysisExplore token probabilities and alternatives, compare outputs and reopen saved analyses.
Saved studiesReopen experiment results and settings, rerun configurations, and export measurements with provenance.

MLX probes, interventions and SAE training use isolated workers and require additional memory. Pool experiments use the resident GGUF model for supported captures and interventions, with probe/SAE fitting on the coordinator. Resident capture still uses GPU capacity and may delay inference. Choose a capture mode →

These are experimental research tools. Activation norms, token probabilities and model-emitted thinking are observations to investigate; they do not certify safety or reveal a faithful account of internal reasoning. Full circuit tracing and pretrained SAE imports are not currently included.

A complete local workspace

WorkspacePurpose
LabExperiments, saved studies and token analysis.
ExecutionLive request inputs, model-emitted thinking, outputs, tool-call data and errors.
ModelsStart and stop models, choose Thinking defaults and manage launch settings.
DiscoverFind and download compatible models from Hugging Face.
RouterOne OpenAI-compatible endpoint for your tools; optional LAN inference sharing.
PoolsPair a worker, run a supported GGUF across devices and inspect allocations and activity.
PerformanceMeasured throughput, time to first token, GPU activity and memory telemetry.
ChatTry prompts, inspect emitted thinking and continue saved conversations.
See the native app

Model management with launch controls

Token analysis with real model output

Hardware telemetry and inference metrics

Build your own research workflow

Use the Python SDK, HTTP APIs or local MCP bridge to script studies and connect your tools. Start with the interface that fits your workflow:

Prefer GitHub docs? App · SDK · API · MCP · OpenAPI.

Share inference on your LAN

Start a model, open Router, enable Share on local network, then start the router and copy its displayed URL into your client. Sharing is opt-in and has no authentication: use a trusted network. Research and execution endpoints remain local-only. Setup and troubleshooting →

Develop and contribute

Bug reports, research feedback, documentation improvements and focused PRs are welcome. Read CONTRIBUTING.md before starting a substantial change. Report vulnerabilities privately through SECURITY.md.

Build on an Apple Silicon Mac with macOS 14+, the Xcode Swift toolchain and uv:

git clone https://github.com/canivel/dynolab.git
cd dynolab
./app/build.sh
open app/build/Dyno.app

The full build bundles Python and MLX. Use ./app/build.sh --slim for native UI iteration. Local builds default to ad-hoc signing; see the maintainer handbook for Developer ID signing, notarization and release credentials.

uv sync --locked --extra mcp --extra docs --python 3.12
PYTHONPATH=src uv run --frozen python -m unittest discover -s tests -v
uv run --frozen python scripts/check-docs.py
swift test --package-path app

PRs require review and passing Python/native checks. Merging runs CI; creating a protected version tag starts the signed release workflow, which creates a draft for verification before publication.

The website is maintained separately and deployed at dynolab.dev. This repository owns the app, SDK, API schema and source documentation.

License

MIT. Built with SwiftUI, MLX and MLX LM.

Expand your lab with a GPU pool

Qwen3-235B running across a Mac and RTX 5090 in Dyno Lab

A recorded run of Qwen3-235B-A22B Q4_K_M, a 142.2 GB model, across a 128 GiB Mac and a roughly 32 GiB RTX 5090 worker. Native activation, probe and SAE experiments also completed on this pool. CPU output tensors participate; adding the devices' reported headroom does not guarantee a model will fit. Loading this model took about 49 minutes on the tested network. Start with a small GGUF to verify your connection.

Available in 0.3.0, the experimental pool uses a verified local SSH tunnel and keeps raw RPC on loopback. Setup and limitations · Pool API and Python clients · Windows client.

Help make the next experiment easier

Try the first experiment and tell us where you got stuck. An issue with your app version, model and steps to reproduce is useful even when you are new to interpretability. Please leave credentials and private prompts out of public reports.

If Dyno Lab is useful to you, star the repo to bookmark it and support its development. Reproductions, corrections and focused contributions help turn a personal research tool into something other people can rely on.

Research workflows

Dyno Lab 0.5.1 adds paired regression reports, artifact compatibility checks, development-only monitor threshold selection, community reproduction records, simulated agent tasks and checkpoint comparisons. Each guide explains the prerequisites, steps, saved evidence and limitations. See the implementation and validation record.

Start with the step-by-step probe tutorial, including the recorded result and why its controls limit the conclusion.

Approval-monitor investigation

An offline probe detected prohibited action proposals, but flagged six legitimate approvals when wording changed. Read the methods, model comparison and false alarms, or view the illustrated research note. The evidence contains all 336 responses and a CPU-only audit. The illustrated grouped-validation workflow was recorded on a development build before 0.5.1.

ai
ai-interpretability
ai-safety
aisafety
alignment
apple-silicon
llm
mcp
mechanistic-interpretability
mlx
probes
sae
sparse-autoencoders
swiftui