diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..916c94b
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,53 @@
+# Copyright 2025 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+# Common editor configurations for this project.
+#
+# EditorConfig is a file format for specifying some common style parameters.
+# Many IDEs & editors read .editorconfig files, either natively or via plugins.
+# We mostly follow Google's style guides (https://google.github.io/styleguide/)
+# with only a few deviations for line length and indentation in some files.
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+root = true
+
+[*]
+charset = utf-8
+indent_style = space
+insert_final_newline = true
+spelling_language = en-US
+trim_trailing_whitespace = true
+max_line_length = 120
+
+[{BUILD,*.BUILD,*.bzl,*.bazel,.bazelrc}]
+indent_size = 4
+
+[{*.cc,*.h}]
+indent_size = 4
+
+[{*.js,*.ts}]
+indent_size = 4
+
+[*.json]
+indent_size = 2
+
+[*.py]
+indent_size = 4
+
+[*.sh]
+indent_size = 4
+
+[{*.yaml,*.yml}]
+indent_size = 2
diff --git a/.github/SECURITY.md b/.github/SECURITY.md
new file mode 100644
index 0000000..77bd1bf
--- /dev/null
+++ b/.github/SECURITY.md
@@ -0,0 +1,36 @@
+# Reporting security issues
+
+This project's developers and community are committed to addressing security
+bugs promptly and effectively. We appreciate your efforts to disclose your
+findings responsibly, and will make every effort to acknowledge your
+contributions.
+
+Please **do not** use GitHub issues to report security vulnerabilities; GitHub
+issues are public, and doing so could allow someone to exploit the information
+before the problem can be addressed. Instead, please use the *Report a
+vulnerability* interface from the *Security* tab at the top of this GitHub
+repository page.
+
+
+
+
+
+Please report security issues in third-party modules to the person or team
+maintaining the module rather than this project's stewards, unless you believe
+that some action needs to be taken specifically with this project in order to
+guard against the effects of a security vulnerability in third-party software.
+
+## Responses to security reports
+
+The project stewards at Google Quantum AI will send a response indicating the
+next steps in handling your report. After the initial reply to your report, the
+project stewards will keep you informed of the progress towards a fix and full
+announcement, and may ask for additional information or guidance.
+
+## Additional points of contact
+
+Please contact the project stewards at Google Quantum AI via email at
+quantum-oss-maintainers@google.com if you have questions or other concerns. If
+for any reason you are uncomfortable reaching out to the project stewards,
+please email opensource@google.com instead.
diff --git a/.github/report-vulnerability-button.png b/.github/report-vulnerability-button.png
new file mode 100644
index 0000000..bfaabdc
Binary files /dev/null and b/.github/report-vulnerability-button.png differ
diff --git a/.markdownlintrc b/.markdownlintrc
new file mode 100644
index 0000000..91a0483
--- /dev/null
+++ b/.markdownlintrc
@@ -0,0 +1,160 @@
+{ // -*- jsonc -*-
+ // Copyright 2025 Google LLC
+ //
+ // Licensed under the Apache License, Version 2.0 (the "License");
+ // you may not use this file except in compliance with the License.
+ // You may obtain a copy of the License at
+ //
+ // https://www.apache.org/licenses/LICENSE-2.0
+ //
+ // Unless required by applicable law or agreed to in writing, software
+ // distributed under the License is distributed on an "AS IS" BASIS,
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ // See the License for the specific language governing permissions and
+ // limitations under the License.
+
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ // Markdownlint linter configuration for this project.
+ //
+ // Note: there are multiple programs programs named "markdownlint". We use
+ // https://github.com/igorshubovych/markdownlint-cli/, which is the one you
+ // get with "brew install markdownlint" on MacOS.
+ //
+ // These settings try to stay close to the Google Markdown Style as
+ // described at https://google.github.io/styleguide/docguide/style.html
+ // with very few differences.
+ //
+ // For a list of possible configuration options, see the following page:
+ // https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md
+ // (Beware that the above looks similar but is NOT the same as the page
+ // https://github.com/markdownlint/markdownlint/blob/main/docs/RULES.md.)
+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ "$schema": "https://raw.githubusercontent.com/DavidAnson/markdownlint/main/schema/markdownlint-config-schema.json",
+
+ // Require ATX-style headings.
+ // https://google.github.io/styleguide/docguide/style.html#atx-style-headings
+ "headings": {
+ "style": "atx"
+ },
+
+ // Google style does not require that the first line of a file is a heading
+ // for the title; it only states that the first heading should be a level 1.
+ // https://google.github.io/styleguide/docguide/style.html#document-layout
+ "first-line-heading": false,
+
+ // The Google style does not define what to do about trailing punctuation in
+ // headings. The markdownlint default disallows exclamation points, which
+ // seems likely to be more annoying than useful – I have definitely seen
+ // people use exclamation points in headings in README files on GitHub.
+ // This setting removes exclamation point from the banned characters.
+ "no-trailing-punctuation": {
+ "punctuation": ".,;:。,;:"
+ },
+
+ // No trailing spaces.
+ // https://google.github.io/styleguide/docguide/style.html#trailing-whitespace
+ "whitespace": {
+ "br_spaces": 0
+ },
+
+ // Google style is 80 characters.
+ // Google style exempts some constructs from the line-length limit:
+ // https://google.github.io/styleguide/docguide/style.html#exceptions
+ "line-length": {
+ "line_length": 120,
+ "code_block_line_length": 120,
+ "heading_line_length": 120,
+ "code_blocks": false,
+ "headings": false,
+ "tables": false
+ },
+
+ // Google Markdown style specifies 2 spaces after item numbers, 3 spaces
+ // after bullets, so that the text itself is consistently indented 4 spaces.
+ // https://google.github.io/styleguide/docguide/style.html#nested-list-spacing
+ "list-marker-space": {
+ "ol_multi": 2,
+ "ol_single": 2,
+ "ul_multi": 3,
+ "ul_single": 3
+ },
+
+ "ul-indent": {
+ "indent": 4
+ },
+
+ // Bare URLs are allowed in GitHub-flavored Markdown and in Google’s style.
+ "no-bare-urls": false,
+
+ // Basic Markdown allows raw HTML. Both GitHub & PyPI support subsets of
+ // HTML, though it's unclear what subset PyPI supports. Google's style guide
+ // recommends against using raw HTML, but does allow it. (C.f. the bottom of
+ // https://google.github.io/styleguide/docguide/style.html) Google's in-house
+ // documentation system allows many inline and block-level tags, but strips
+ // others that can pose security risks (e.g.,