---
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.15.0-->
        <h3>1.15.0</h3>
        <!-- RELEASE NOTES -->
        <strong><a target="_blank" href="https://cwiki.apache.org/confluence/display/GEODE/Release+Notes#ReleaseNotes-1.15.0">Release Notes</a></strong>
        <p/>

        <!-- BINARY -->
        <span> <strong>Binaries </strong>
          [<a target="_blank" href="https://apache.org/dyn/closer.cgi/geode/1.15.0/apache-geode-1.15.0.tgz">TGZ</a>, <a target="_blank" href="https://downloads.apache.org/geode/1.15.0/apache-geode-1.15.0.tgz.sha256">SHA-256</a>,
          <a target="_blank" href="https://downloads.apache.org/geode/1.15.0/apache-geode-1.15.0.tgz.asc">PGP</a> ]
        </span><br/>
        <!-- SOURCE -->
        <span> <strong>Source</strong>
          [<a target="_blank" href="https://apache.org/dyn/closer.cgi/geode/1.15.0/apache-geode-1.15.0-src.tgz">TGZ</a>, <a target="_blank" href="https://downloads.apache.org/geode/1.15.0/apache-geode-1.15.0-src.tgz.sha256">SHA-256</a>,
           <a target="_blank" href="https://downloads.apache.org/geode/1.15.0/apache-geode-1.15.0-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.15.0/apache-geode-native-1.15.0-src.tgz">TGZ</a>, <a target="_blank" href="https://downloads.apache.org/geode/1.15.0/apache-geode-native-1.15.0-src.tgz.sha256">SHA-256</a>,
           <a target="_blank" href="https://downloads.apache.org/geode/1.15.0/apache-geode-native-1.15.0-src.tgz.asc">PGP</a>
           ]
         </span><br/>
        <!-- BENCHMARKS -->
        <span> <strong>Benchmarks</strong>
          [<a target="_blank" href="https://apache.org/dyn/closer.cgi/geode/1.15.0/apache-geode-benchmarks-1.15.0-src.tgz">TGZ</a>, <a target="_blank" href="https://downloads.apache.org/geode/1.15.0/apache-geode-benchmarks-1.15.0-src.tgz.sha256">SHA-256</a>,
           <a target="_blank" href="https://downloads.apache.org/geode/1.15.0/apache-geode-benchmarks-1.15.0-src.tgz.asc">PGP</a>
           ]
         </span><br/>
        <!-- Examples -->
        <span> <strong>Examples</strong>
           [<a target="_blank" href="https://apache.org/dyn/closer.cgi/geode/1.15.0/apache-geode-examples-1.15.0-src.tgz">TGZ</a>, <a target="_blank" href="https://downloads.apache.org/geode/1.15.0/apache-geode-examples-1.15.0-src.tgz.sha256">SHA-256</a>,
           <a target="_blank" href="https://downloads.apache.org/geode/1.15.0/apache-geode-examples-1.15.0-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.15.0'
}
</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.15.0&lt;/version&gt;
  &lt;/dependency&gt;
&lt;/dependencies&gt;
</pre>
        </div>
        <!-- END OF 1.15.0 -->

        <!-- 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 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>
