---
title: Releases
---
<!-- Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you 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

  http://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. -->
<section class="bf-tagline">
    <div class="container">
    	<div class="row">
          <br />
    	    	<h2>Apache Geode Releases</h2>
    		<p>Releases of Geode are made available to the general public at no charge, under the <a target="_blank" href="http://apache.org/licenses/">Apache License</a>, in both binary and source distributions.  Binary downloads are provided for the convenience of our users and are not official Apache Geode releases.</p>
		</div>
	</div>
</section>

<section class="bf-releases">
    <div class="container">
      <div class="row">
    		<div class="col-md-9">
      <!-- RELEASES -->
      <div class="container">

        <!-- START OF 1.14.4-->
        <h3>1.14.4</h3>
        <!-- RELEASE NOTES -->
        <strong><a target="_blank" href="https://cwiki.apache.org/confluence/display/GEODE/Release+Notes#ReleaseNotes-1.14.4">Release Notes</a></strong>
        <p/>

        <!-- BINARY -->
        <span> <strong>Binaries </strong>
          [<a target="_blank" href="https://apache.org/dyn/closer.cgi/geode/1.14.4/apache-geode-1.14.4.tgz">TGZ</a>, <a target="_blank" href="https://downloads.apache.org/geode/1.14.4/apache-geode-1.14.4.tgz.sha256">SHA-256</a>,
          <a target="_blank" href="https://downloads.apache.org/geode/1.14.4/apache-geode-1.14.4.tgz.asc">PGP</a> ]
        </span><br/>
        <!-- SOURCE -->
        <span> <strong>Source</strong>
          [<a target="_blank" href="https://apache.org/dyn/closer.cgi/geode/1.14.4/apache-geode-1.14.4-src.tgz">TGZ</a>, <a target="_blank" href="https://downloads.apache.org/geode/1.14.4/apache-geode-1.14.4-src.tgz.sha256">SHA-256</a>,
           <a target="_blank" href="https://downloads.apache.org/geode/1.14.4/apache-geode-1.14.4-src.tgz.asc">PGP</a>
           ]
         </span><br/>
        <!-- NATIVE CLIENT SOURCE -->
        <span> <strong>Geode Native Source</strong>
          [<a target="_blank" href="https://apache.org/dyn/closer.cgi/geode/1.14.4/apache-geode-native-1.14.4-src.tgz">TGZ</a>, <a target="_blank" href="https://downloads.apache.org/geode/1.14.4/apache-geode-native-1.14.4-src.tgz.sha256">SHA-256</a>,
           <a target="_blank" href="https://downloads.apache.org/geode/1.14.4/apache-geode-native-1.14.4-src.tgz.asc">PGP</a>
           ]
         </span><br/>
        <!-- BENCHMARKS -->
        <span> <strong>Benchmarks</strong>
          [<a target="_blank" href="https://apache.org/dyn/closer.cgi/geode/1.14.4/apache-geode-benchmarks-1.14.4-src.tgz">TGZ</a>, <a target="_blank" href="https://downloads.apache.org/geode/1.14.4/apache-geode-benchmarks-1.14.4-src.tgz.sha256">SHA-256</a>,
           <a target="_blank" href="https://downloads.apache.org/geode/1.14.4/apache-geode-benchmarks-1.14.4-src.tgz.asc">PGP</a>
           ]
         </span><br/>
        <!-- Examples -->
        <span> <strong>Examples</strong>
           [<a target="_blank" href="https://apache.org/dyn/closer.cgi/geode/1.14.4/apache-geode-examples-1.14.4-src.tgz">TGZ</a>, <a target="_blank" href="https://downloads.apache.org/geode/1.14.4/apache-geode-examples-1.14.4-src.tgz.sha256">SHA-256</a>,
           <a target="_blank" href="https://downloads.apache.org/geode/1.14.4/apache-geode-examples-1.14.4-src.tgz.asc">PGP</a>
           ]
         </span><br/>

        <!-- DEPENDENCY MANAGERS -->
        <div class="container">
          <strong>Gradle</strong>
<pre class="prettyprint">
dependencies {
  compile 'org.apache.geode:geode-core:1.14.4'
}
</pre>
          <strong>Maven</strong>
<pre class="prettyprint">
&lt;dependencies&gt;
  &lt;dependency&gt;
    &lt;groupId&gt;org.apache.geode&lt;/groupId&gt;
    &lt;artifactId&gt;geode-core&lt;/artifactId&gt;
    &lt;version&gt;1.14.4&lt;/version&gt;
  &lt;/dependency&gt;
&lt;/dependencies&gt;
</pre>
        </div>
        <!-- END OF 1.14.4 -->

        <!-- START OF 1.13.8-->
        <h3>1.13.8</h3>
        <!-- RELEASE NOTES -->
        <strong><a target="_blank" href="https://cwiki.apache.org/confluence/display/GEODE/Release+Notes#ReleaseNotes-1.13.8">Release Notes</a></strong>
        <p/>

        <!-- BINARY -->
        <span> <strong>Binaries </strong>
          [<a target="_blank" href="https://apache.org/dyn/closer.cgi/geode/1.13.8/apache-geode-1.13.8.tgz">TGZ</a>, <a target="_blank" href="https://downloads.apache.org/geode/1.13.8/apache-geode-1.13.8.tgz.sha256">SHA-256</a>,
          <a target="_blank" href="https://downloads.apache.org/geode/1.13.8/apache-geode-1.13.8.tgz.asc">PGP</a> ]
        </span><br/>
        <!-- SOURCE -->
        <span> <strong>Source</strong>
          [<a target="_blank" href="https://apache.org/dyn/closer.cgi/geode/1.13.8/apache-geode-1.13.8-src.tgz">TGZ</a>, <a target="_blank" href="https://downloads.apache.org/geode/1.13.8/apache-geode-1.13.8-src.tgz.sha256">SHA-256</a>,
           <a target="_blank" href="https://downloads.apache.org/geode/1.13.8/apache-geode-1.13.8-src.tgz.asc">PGP</a>
           ]
         </span><br/>
        <!-- NATIVE CLIENT SOURCE -->
        <span> <strong>Geode Native Source</strong>
          [<a target="_blank" href="https://apache.org/dyn/closer.cgi/geode/1.13.8/apache-geode-native-1.13.8-src.tgz">TGZ</a>, <a target="_blank" href="https://downloads.apache.org/geode/1.13.8/apache-geode-native-1.13.8-src.tgz.sha256">SHA-256</a>,
           <a target="_blank" href="https://downloads.apache.org/geode/1.13.8/apache-geode-native-1.13.8-src.tgz.asc">PGP</a>
           ]
         </span><br/>
        <!-- BENCHMARKS -->
        <span> <strong>Benchmarks</strong>
          [<a target="_blank" href="https://apache.org/dyn/closer.cgi/geode/1.13.8/apache-geode-benchmarks-1.13.8-src.tgz">TGZ</a>, <a target="_blank" href="https://downloads.apache.org/geode/1.13.8/apache-geode-benchmarks-1.13.8-src.tgz.sha256">SHA-256</a>,
           <a target="_blank" href="https://downloads.apache.org/geode/1.13.8/apache-geode-benchmarks-1.13.8-src.tgz.asc">PGP</a>
           ]
         </span><br/>
        <!-- Examples -->
        <span> <strong>Examples</strong>
           [<a target="_blank" href="https://apache.org/dyn/closer.cgi/geode/1.13.8/apache-geode-examples-1.13.8-src.tgz">TGZ</a>, <a target="_blank" href="https://downloads.apache.org/geode/1.13.8/apache-geode-examples-1.13.8-src.tgz.sha256">SHA-256</a>,
           <a target="_blank" href="https://downloads.apache.org/geode/1.13.8/apache-geode-examples-1.13.8-src.tgz.asc">PGP</a>
           ]
         </span><br/>

        <!-- DEPENDENCY MANAGERS -->
        <div class="container">
          <strong>Gradle</strong>
<pre class="prettyprint">
dependencies {
  compile 'org.apache.geode:geode-core:1.13.8'
}
</pre>
          <strong>Maven</strong>
<pre class="prettyprint">
&lt;dependencies&gt;
  &lt;dependency&gt;
    &lt;groupId&gt;org.apache.geode&lt;/groupId&gt;
    &lt;artifactId&gt;geode-core&lt;/artifactId&gt;
    &lt;version&gt;1.13.8&lt;/version&gt;
  &lt;/dependency&gt;
&lt;/dependencies&gt;
</pre>
        </div>
        <!-- END OF 1.13.8 -->

        <!-- START OF 1.12.9-->
        <h3>1.12.9 </h3>
        <!-- RELEASE NOTES -->
        <strong><a target="_blank" href="https://cwiki.apache.org/confluence/display/GEODE/Release+Notes#ReleaseNotes-1.12.9">Release Notes</a></strong>
        <p/>

        <!-- BINARY -->
        <span> <strong>Binaries </strong>
          [<a target="_blank" href="https://apache.org/dyn/closer.cgi/geode/1.12.9/apache-geode-1.12.9.tgz">TGZ</a>, <a target="_blank" href="https://downloads.apache.org/geode/1.12.9/apache-geode-1.12.9.tgz.sha256">SHA-256</a>,
          <a target="_blank" href="https://downloads.apache.org/geode/1.12.9/apache-geode-1.12.9.tgz.asc">PGP</a> ]
        </span><br/>
        <!-- SOURCE -->
        <span> <strong>Source</strong>
          [<a target="_blank" href="https://apache.org/dyn/closer.cgi/geode/1.12.9/apache-geode-1.12.9-src.tgz">TGZ</a>, <a target="_blank" href="https://downloads.apache.org/geode/1.12.9/apache-geode-1.12.9-src.tgz.sha256">SHA-256</a>,
           <a target="_blank" href="https://downloads.apache.org/geode/1.12.9/apache-geode-1.12.9-src.tgz.asc">PGP</a>
           ]
         </span><br/>
        <!-- NATIVE CLIENT SOURCE -->
        <span> <strong>Geode Native Source</strong>
          [<a target="_blank" href="https://apache.org/dyn/closer.cgi/geode/1.12.9/apache-geode-native-1.12.9-src.tgz">TGZ</a>, <a target="_blank" href="https://downloads.apache.org/geode/1.12.9/apache-geode-native-1.12.9-src.tgz.sha256">SHA-256</a>,
           <a target="_blank" href="https://downloads.apache.org/geode/1.12.9/apache-geode-native-1.12.9-src.tgz.asc">PGP</a>
           ]
         </span><br/>
        <!-- BENCHMARKS -->
        <span> <strong>Benchmarks</strong>
          [<a target="_blank" href="https://apache.org/dyn/closer.cgi/geode/1.12.9/apache-geode-benchmarks-1.12.9-src.tgz">TGZ</a>, <a target="_blank" href="https://downloads.apache.org/geode/1.12.9/apache-geode-benchmarks-1.12.9-src.tgz.sha256">SHA-256</a>,
           <a target="_blank" href="https://downloads.apache.org/geode/1.12.9/apache-geode-benchmarks-1.12.9-src.tgz.asc">PGP</a>
           ]
         </span><br/>
        <!-- Examples -->
        <span> <strong>Examples</strong>
           [<a target="_blank" href="https://apache.org/dyn/closer.cgi/geode/1.12.9/apache-geode-examples-1.12.9-src.tgz">TGZ</a>, <a target="_blank" href="https://downloads.apache.org/geode/1.12.9/apache-geode-examples-1.12.9-src.tgz.sha256">SHA-256</a>,
           <a target="_blank" href="https://downloads.apache.org/geode/1.12.9/apache-geode-examples-1.12.9-src.tgz.asc">PGP</a>
           ]
         </span><br/>

        <!-- DEPENDENCY MANAGERS -->
        <div class="container">
          <strong>Gradle</strong>
<pre class="prettyprint">
dependencies {
  compile 'org.apache.geode:geode-core:1.12.9'
}
</pre>
          <strong>Maven</strong>
<pre class="prettyprint">
&lt;dependencies&gt;
  &lt;dependency&gt;
    &lt;groupId&gt;org.apache.geode&lt;/groupId&gt;
    &lt;artifactId&gt;geode-core&lt;/artifactId&gt;
    &lt;version&gt;1.12.9&lt;/version&gt;
  &lt;/dependency&gt;
&lt;/dependencies&gt;
</pre>
        </div>
        <!-- END OF 1.12.9 -->

        <!-- START OF Kafka Connector 1.1.0 -->
        <h3>Geode Kafka Connector 1.1.0 </h3>
        <!-- RELEASE NOTES -->
        <strong><a target="_blank" href="https://cwiki.apache.org/confluence/display/GEODE/Release+Notes#ReleaseNotes-KakfaConnector1.1.0">Release Notes</a></strong>
        <p/>
        <!-- BINARY -->
        <span> <strong>Binaries </strong>
          [<a target="_blank" href="https://apache.org/dyn/closer.cgi/geode/kafka-connector-1.1.0/apache-kafka-connect-geode-1.1.0.zip">ZIP</a>, <a target="_blank" href="https://downloads.apache.org/geode/kafka-connector-1.1.0/apache-kafka-connect-geode-1.1.0.zip.sha256">SHA-256</a>,
          <a target="_blank" href="https://downloads.apache.org/geode/kafka-connector-1.1.0/apache-kafka-connect-geode-1.1.0.zip.asc">PGP</a> ]
        </span><br/>
        <!-- SOURCE -->
        <span> <strong>Source</strong>
          [<a target="_blank" href="https://apache.org/dyn/closer.cgi/geode/kafka-connector-1.1.0/geode-kafka-connector-rel-v1.1.0.tar.gz">TGZ</a>, <a target="_blank" href="https://downloads.apache.org/geode/kafka-connector-1.1.0/geode-kafka-connector-rel-v1.1.0.tar.gz.sha256">SHA-256</a>,
           <a target="_blank" href="https://downloads.apache.org/geode/kafka-connector-1.1.0/geode-kafka-connector-rel-v1.1.0.tar.gz.asc">PGP</a>
           ]
         </span><br/>
        
        <!-- END OF Kafka Connector 1.1.0 -->

      </div>
      <p>If you need access to older releases they can be found in the <a target="_blank" href="https://archive.apache.org/dist/geode/">release archives</a>.</p>
      <!-- END OF RELEASE -->
      <hr/>
        <p>
					Project releases are approved by vote of the Apache Geode Project Management Committee (PMC). Support for a release is provided by project volunteers on the project <a href="https://geode.apache.org/community/#mailing-lists">mailing lists</a>. Bugs found in a release may be discussed on the list and reported through the <a href="https://issues.apache.org/jira/browse/GEODE">issue tracker</a>. The user mailing list and issue tracker are the only support options hosted by the Apache Geode project.
				</p>
				<p>
					<strong>Note</strong>: When downloading from a mirror, please be sure to verify that checksums and signatures are correct. To do so, use the checksum and signature files from the main Apache site at <a href="https://downloads.apache.org/geode/">https://downloads.apache.org/geode/</a>. Find here the KEYS file, which contains all OpenPGP keys we use to sign releases here: <a href="https://downloads.apache.org/geode/KEYS">KEYS</a>
				</p>
				<p>
					The PGP signatures can be verified using PGP or GPG. First download the <a href="https://downloads.apache.org/geode/KEYS">KEYS</a> as well as the <em>asc signature</em> file for the particular distribution. Then verify the signatures using:
				</p>
				<p style="margin-left:5%"><tt>
       				pgpk -a KEYS
					</br>
        			pgpv ${filename}.tgz.asc</tt>
        			</p>
                                <p>
    				or
				<p style="margin-left:5%"><tt>
        			pgp -ka KEYS
        			</br>
        			pgp ${filename}.tgz.asc</tt>
                                <p>
    				or
				<p style="margin-left:5%"><tt>
        			gpg --import KEYS
        			</br>
        			gpg --verify ${filename}.tgz.asc ${filename}.tgz</tt>
        		</p>
        <p>
        Alternatively, you can verify the SHA256 checksum on the files. A program called <tt>sha256sum</tt>
        or <tt>shasum -a 256</tt> is included in most Linux distributions:
        </p>
        <p style="margin-left:5%"><tt>sha256sum --check ${filename}.tgz.sha256</tt>
        </p>
        <p>
          Windows users can use the built-in CertUtil:
        </p>
      <p style="margin-left:5%"><tt>CertUtil -hashfile ${filename}.tgz SHA256</tt>
      </p>
      <p>or PowerShell command:</p>
      <p style="margin-left:5%"><tt>Get-FileHash ${filename}.tgz -Algorithm SHA256 | Format-List</tt>
      </p>
				<p>
					If you want to build directly from source, see the BUILDING.md file in the top-level source directory.
				</p>
			</div>
		</div>
	</div>
</section>
