Skip to main content
  _____                       _____
 |  __ \                     |  __ \
 | |  | |   __ _  __      __ | |  | |  _ __    ___    __ _   _ __ ___     ___   _ __
 | |  | |  / _` | \ \ /\ / / | |  | | | '__|  / _ \  / _` | | '_ ` _ \   / _ \ | '__|
 | |__| | | (_| |  \ V  V /  | |__| | | |    |  __/ | (_| | | | | | | | |  __/ | |
 |_____/   \__,_|   \_/\_/   |_____/  |_|     \___|  \__,_| |_| |_| |_|  \___| |_|

* * Digital Audio Workstation with Python * *

Supported Platforms Test Badge PyPI version fury.io GPLv3 license GitHub Repo stars Generic badge

DawDreamer

Read the introduction to DawDreamer, which was presented as a Late-Breaking Demo at the 2021 ISMIR Conference.

DawDreamer is an audio-processing Python framework supporting core DAW features and beyond:

  • Composing graphs of multi-channel audio processors
  • Audio playback
  • VST instruments and effects (with UI editing and state loading/saving)
  • FAUST effects and polyphonic instruments
  • Time-stretching and looping, optionally according to Ableton Live warp markers
  • Pitch-warping
  • Parameter automation at audio-rate and at pulses-per-quarter-note
  • Parameter automation saving in absolute audio-rate time
  • MIDI playback in absolute time and PPQN time
  • MIDI file export in absolute time
  • Rendering and saving multiple processors simultaneously
  • Support for the Faust Box and Signal APIs
  • Transpiling Faust code to JAX/Flax and other target languages (C++, Rust, Wasm, etc.)
  • Machine learning experiments with QDax
  • Multiprocessing support
  • Full support on macOS, Windows, Linux, Google Colab, and Ubuntu Dockerfile

DawDreamer's foundation is JUCE, with a user-friendly Python interface thanks to nanobind. DawDreamer evolved from an earlier VSTi audio "renderer", RenderMan.

Installation

macOS requirements:

  • 64-bit Python 3.11-3.14
  • Apple Silicon (arm64) or Intel (x86_64)
  • macOS 11.0 or higher

Windows requirements:

  • x86_64 CPU
  • 64-bit Python 3.11-3.14

Linux requirements:

  • x86_64 or aarch64 CPU
  • 64-bit Python 3.11-3.14

Install with PyPI:

pip install dawdreamer

API Documentation

https://dbraun.github.io/DawDreamer/

Basic Example

Using Faust, let's make a stereo sine-tone at 440 Hz and -6 dB. You can run this code as-is.

import dawdreamer as daw
from scipy.io import wavfile
SAMPLE_RATE = 44100
engine = daw.RenderEngine(SAMPLE_RATE, 512)  # 512 block size
faust_processor = engine.make_faust_processor("faust")
faust_processor.set_dsp_string(
    """
    declare name "MySine";
    freq = hslider("freq", 440, 0, 20000, 0);
    gain = hslider("vol[unit:dB]", 0, -120, 20, 0) : ba.db2linear;
    process = freq : os.osc : _*gain <: si.bus(2);
    """
    )
print(faust_processor.get_parameters_description())
engine.load_graph([
                   (faust_processor, [])
])
faust_processor.set_parameter("/MySine/freq", 440.)  # 440 Hz
faust_processor.set_parameter("/MySine/vol", -6.)  # -6 dB volume

engine.set_bpm(120.)
engine.render(4., beats=True)  # render 4 beats.
audio = engine.get_audio()  # shaped (2, N samples)
wavfile.write("sine_demo.wav", SAMPLE_RATE, audio.T)

# Change settings and re-render
faust_processor.set_parameter("/MySine/freq", 880.)  # 880 Hz
engine.render(4., beats=True)
# and so on...

Next, let's make a graph with a VST instrument and effect. This graph will be simple, but you can make more complicated ones.

import dawdreamer as daw
from scipy.io import wavfile
SAMPLE_RATE = 44100
INSTRUMENT_PATH = "path/to/instrument.dll"
EFFECT_PATH = "path/to/effect.dll"

engine = daw.RenderEngine(SAMPLE_RATE, 512)
engine.set_bpm(120.)

synth = engine.make_plugin_processor("synth", INSTRUMENT_PATH)
print("inputs:", synth.get_num_input_channels())
print("outputs:", synth.get_num_output_channels())
print(synth.get_parameters_description())

synth.set_parameter(7, .1234)

# (MIDI note, velocity, start sec, duration sec)
synth.add_midi_note(60, 100, 0.0, 2.)

# optionally capture intermediate audio
synth.record = True

effect = engine.make_plugin_processor("effect", EFFECT_PATH)

engine.load_graph([
  (synth, []),
  (effect, [synth.get_name()])  # effect needs 2 channels, and "synth" provides those 2.
  ])

engine.render(4.)  # render 4 seconds.
audio = engine.get_audio()
wavfile.write("synth_demo_wet.wav", SAMPLE_RATE, audio.T)
synth_audio = engine.get_audio("synth")
wavfile.write("synth_demo_dry.wav", SAMPLE_RATE, synth_audio.T)
synth.clear_midi()
# add midi again, render again, and so on...

Known Issues

Compatibility with JAX and other LLVM-based libraries

DawDreamer must be imported before JAX or other LLVM-based libraries (such as PyTorch with TorchScript, Numba, etc.) to avoid LLVM initialization conflicts that can cause segmentation faults:

# CORRECT:
import dawdreamer as daw  # Import DawDreamer first!
import jax

# WRONG - May cause segfault:
import jax
import dawdreamer as daw  # Importing after JAX can crash!

Why? Both DawDreamer (via Faust's LLVM backend) and JAX use LLVM internally. When JAX initializes LLVM first (e.g., by calling jax.devices()), importing DawDreamer afterward can cause conflicts in LLVM's global state, resulting in a crash.

Workaround: Always import dawdreamer at the top of your Python file, before any JAX or related libraries.

Documentation

Full documentation: https://dbraun.github.io/DawDreamer/

License

DawDreamer is licensed under GPLv3 to make it easier to comply with all of the dependent projects. If you use DawDreamer, you must obey the licenses of JUCE, nanobind, Libsamplerate, Rubber Band Library, Steinberg VST2/3, and FAUST.

Metadata

Release files for dawdreamer 0.9.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for dawdreamer 0.9.0
File
dawdreamer-0.9.0-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
dawdreamer-0.9.0-cp314-cp314-manylinux_2_34_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.34+ x86-64 Details
dawdreamer-0.9.0-cp314-cp314-manylinux_2_34_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.34+ ARM64 Details
dawdreamer-0.9.0-cp314-cp314-macosx_11_0_x86_64.whl CPython 3.14 CPython 3.14 macOS 11.0+ x86-64 Details
dawdreamer-0.9.0-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
dawdreamer-0.9.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
dawdreamer-0.9.0-cp313-cp313-manylinux_2_34_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.34+ x86-64 Details
dawdreamer-0.9.0-cp313-cp313-manylinux_2_34_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.34+ ARM64 Details
dawdreamer-0.9.0-cp313-cp313-macosx_11_0_x86_64.whl CPython 3.13 CPython 3.13 macOS 11.0+ x86-64 Details
dawdreamer-0.9.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
dawdreamer-0.9.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
dawdreamer-0.9.0-cp312-cp312-manylinux_2_34_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.34+ x86-64 Details
dawdreamer-0.9.0-cp312-cp312-manylinux_2_34_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.34+ ARM64 Details
dawdreamer-0.9.0-cp312-cp312-macosx_11_0_x86_64.whl CPython 3.12 CPython 3.12 macOS 11.0+ x86-64 Details
dawdreamer-0.9.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
dawdreamer-0.9.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
dawdreamer-0.9.0-cp311-cp311-manylinux_2_34_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.34+ x86-64 Details
dawdreamer-0.9.0-cp311-cp311-manylinux_2_34_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.34+ ARM64 Details
dawdreamer-0.9.0-cp311-cp311-macosx_11_0_x86_64.whl CPython 3.11 CPython 3.11 macOS 11.0+ x86-64 Details
dawdreamer-0.9.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details

Total release size: 752.9 MB

Release files / dawdreamer-0.9.0-cp314-cp314-win_amd64.whl

Download URL dawdreamer-0.9.0-cp314-cp314-win_amd64.whl
Size 23.6 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
1acf899aafbb174371f13b103da3dec0cd7cac60abb02932f573ca6bda05e738
BLAKE2b-256 checksum
How to use checksums
e9c52f63cf387ddb5fac0d40982ea3e8b742988d01e420603b3b6810204d64b5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / dawdreamer-0.9.0-cp314-cp314-manylinux_2_34_x86_64.whl

Download URL dawdreamer-0.9.0-cp314-cp314-manylinux_2_34_x86_64.whl
Size 40.2 MB
Tags CPython 3.14 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
7c9e30a803e2e16f675de089193336ddcbd772d0cb5d1fda36272dc6497caf21
BLAKE2b-256 checksum
How to use checksums
4a0394d97eca493a078d57de264fd7f78aaca5ef0ac7d147c6be7546fb65c4cc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / dawdreamer-0.9.0-cp314-cp314-manylinux_2_34_aarch64.whl

Download URL dawdreamer-0.9.0-cp314-cp314-manylinux_2_34_aarch64.whl
Size 40.6 MB
Tags CPython 3.14 Linux glibc 2.34+ ARM64
SHA-256 checksum
How to use checksums
542cce12cbdb9019154bf7127ce4ebb2ba7ee224a99d5a5745329e29bbe4f5e8
BLAKE2b-256 checksum
How to use checksums
68950cf8b535921b9ab1f2575415de3a000a991c30cc3b324a949c9f3a341d70
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / dawdreamer-0.9.0-cp314-cp314-macosx_11_0_x86_64.whl

Download URL dawdreamer-0.9.0-cp314-cp314-macosx_11_0_x86_64.whl
Size 44.4 MB
Tags CPython 3.14 macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
3fe528ae5255ea27032fd45ef5199e1dcd000eaa42bb8ec62a5618a551c1a207
BLAKE2b-256 checksum
How to use checksums
e1e221d4fa2012abe6fcfef5f1366740c86029f6c41ee4241eac02f4391e53f9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / dawdreamer-0.9.0-cp314-cp314-macosx_11_0_arm64.whl

Download URL dawdreamer-0.9.0-cp314-cp314-macosx_11_0_arm64.whl
Size 39.7 MB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
1ca73180447622d65b310181d23fe13a5571061f974c78aa56de1d2049cb5db1
BLAKE2b-256 checksum
How to use checksums
680e11837ab31b3f8fbc791a10cbd522dbc9d2c8989e07eabd19f49e18ac2bb0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / dawdreamer-0.9.0-cp313-cp313-win_amd64.whl

Download URL dawdreamer-0.9.0-cp313-cp313-win_amd64.whl
Size 23.1 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
90a226c989f8228e2c053bc8b8f94ff7890d0484977b11bf182bd4f0108bc159
BLAKE2b-256 checksum
How to use checksums
2137073d80a4816d0ab69a468ae067555724f704a0f32640351644e5655b586b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / dawdreamer-0.9.0-cp313-cp313-manylinux_2_34_x86_64.whl

Download URL dawdreamer-0.9.0-cp313-cp313-manylinux_2_34_x86_64.whl
Size 40.2 MB
Tags CPython 3.13 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
1ff4812ff8b371d7996bfcf693ba26979c8fa050cfefab2f5ea9bb497cee61f3
BLAKE2b-256 checksum
How to use checksums
991b20923cd2c69a0ab571258882ec3c94c262fabdda496eefc19ef4de1afd19
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / dawdreamer-0.9.0-cp313-cp313-manylinux_2_34_aarch64.whl

Download URL dawdreamer-0.9.0-cp313-cp313-manylinux_2_34_aarch64.whl
Size 40.6 MB
Tags CPython 3.13 Linux glibc 2.34+ ARM64
SHA-256 checksum
How to use checksums
38cb8c4325b3ab82a71d573bd5b09708b5a54b3aa18eefaaa291b790c698cbd1
BLAKE2b-256 checksum
How to use checksums
448cf96e435d774da406ebfae96bd82e0c5a3daee2aeda41411ca83055ae9405
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / dawdreamer-0.9.0-cp313-cp313-macosx_11_0_x86_64.whl

Download URL dawdreamer-0.9.0-cp313-cp313-macosx_11_0_x86_64.whl
Size 44.4 MB
Tags CPython 3.13 macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
274f61dca97afde2d37fc3b53bb0b8eee10a6cbcbc22d08ef3050684fd320c84
BLAKE2b-256 checksum
How to use checksums
a9dac1ada5c7a0875fd81fd28bbae3933411c1aedcd9397a9c645af2b99103b7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / dawdreamer-0.9.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL dawdreamer-0.9.0-cp313-cp313-macosx_11_0_arm64.whl
Size 39.7 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d814e249b5b680c3db61c48cd278ac1b060ac362538ca54f6901d97353fdd4b1
BLAKE2b-256 checksum
How to use checksums
5cef618c87afdd0e403d535a38f3502f7ce5c1a3881dc4c96b40bbbc994fc96b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / dawdreamer-0.9.0-cp312-cp312-win_amd64.whl

Download URL dawdreamer-0.9.0-cp312-cp312-win_amd64.whl
Size 23.1 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
0076ebe3de73d0888bc6e5cc08ddb95e71d738dc587afbc7df1bf542e945f5b9
BLAKE2b-256 checksum
How to use checksums
79d6439c6ed32f4f4886142ea1a5fc81fb18d0b7fae7acbfe6a9ca926ba30a34
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / dawdreamer-0.9.0-cp312-cp312-manylinux_2_34_x86_64.whl

Download URL dawdreamer-0.9.0-cp312-cp312-manylinux_2_34_x86_64.whl
Size 40.2 MB
Tags CPython 3.12 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
9daf556b0f49b65d14f0504cc3a118c85f0c034eeb51b02e5a267bf42779c6f7
BLAKE2b-256 checksum
How to use checksums
6849962eb7044e97076dc931d143fd78ef1ebb7a866c1e9efe3cdd02d18476b1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / dawdreamer-0.9.0-cp312-cp312-manylinux_2_34_aarch64.whl

Download URL dawdreamer-0.9.0-cp312-cp312-manylinux_2_34_aarch64.whl
Size 40.6 MB
Tags CPython 3.12 Linux glibc 2.34+ ARM64
SHA-256 checksum
How to use checksums
c54166ce08ee37ed2abb5cab718e9e3375cf8d22d4980a52c71f4eb6e2604e84
BLAKE2b-256 checksum
How to use checksums
ef49db042fdf577fa216d9b0004c80605286a356b807f6bb38ca3f5dd64c1b5c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / dawdreamer-0.9.0-cp312-cp312-macosx_11_0_x86_64.whl

Download URL dawdreamer-0.9.0-cp312-cp312-macosx_11_0_x86_64.whl
Size 44.4 MB
Tags CPython 3.12 macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
01ce44210502201dd35f62dd5f9c356f9bec068ad81ef6d9cfebf8b318a50a86
BLAKE2b-256 checksum
How to use checksums
b4c903e9d4c5cdb338a95b0fbb1caa1305dacc9269e1c0ea2b3cccbd3b489d99
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / dawdreamer-0.9.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL dawdreamer-0.9.0-cp312-cp312-macosx_11_0_arm64.whl
Size 39.7 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
cd53384a505918f11182c81113bb782e4a34baa4d5f53c089fa3919fb1deb991
BLAKE2b-256 checksum
How to use checksums
7e9593114482c9dbcab39d6e5b844bd6a96a919d5864e913c966abba0d67f0d5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / dawdreamer-0.9.0-cp311-cp311-win_amd64.whl

Download URL dawdreamer-0.9.0-cp311-cp311-win_amd64.whl
Size 23.1 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
4899f18eb6c3e99daff1ac3ff01d55cb739a30d8b669c2ba467b186ec01b2437
BLAKE2b-256 checksum
How to use checksums
18ac00d049dff78a8ac7d75afa6f6e0f71d0f2e0e302cba065e9a88a6cd397c7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / dawdreamer-0.9.0-cp311-cp311-manylinux_2_34_x86_64.whl

Download URL dawdreamer-0.9.0-cp311-cp311-manylinux_2_34_x86_64.whl
Size 40.2 MB
Tags CPython 3.11 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
f6bdfb54cb29a2af080e879d97985103f143bfd3225cb61ed9b7898ab390c586
BLAKE2b-256 checksum
How to use checksums
03d2671aca2e6c2221b694ea1be374fb48c1cdafa584b3e2dff073ded3358d84
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / dawdreamer-0.9.0-cp311-cp311-manylinux_2_34_aarch64.whl

Download URL dawdreamer-0.9.0-cp311-cp311-manylinux_2_34_aarch64.whl
Size 40.7 MB
Tags CPython 3.11 Linux glibc 2.34+ ARM64
SHA-256 checksum
How to use checksums
455e55aca6e6b3fb1e6b4ad8381e20f64c5c8f1384ef90fc7f671d836d3bf79a
BLAKE2b-256 checksum
How to use checksums
316c68d9dc767247679acb8e1193c92258ace6766b4141464ec151b710b148e6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / dawdreamer-0.9.0-cp311-cp311-macosx_11_0_x86_64.whl

Download URL dawdreamer-0.9.0-cp311-cp311-macosx_11_0_x86_64.whl
Size 44.4 MB
Tags CPython 3.11 macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
a064f692e9be39d55a553bbbacdb30f7461ed11adffe6646bd23da7088b1db23
BLAKE2b-256 checksum
How to use checksums
686353bb2badae8516507c9855aaa92dc68d402c2491b84a47a1605008a15cb2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / dawdreamer-0.9.0-cp311-cp311-macosx_11_0_arm64.whl

Download URL dawdreamer-0.9.0-cp311-cp311-macosx_11_0_arm64.whl
Size 39.7 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
400bf5ecf460384a70e79576e758e902c968454db2183297a46eafeec78d6025
BLAKE2b-256 checksum
How to use checksums
64c8bb9754d7f902d6a30c243198027256070286203c7ec57d4861995ab108e7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Security for dawdreamer 0.9.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page