diff --git a/one/templates/box/key/box.html b/one/templates/box/key/box.html
new file mode 100644
index 0000000..217f33a
--- /dev/null
+++ b/one/templates/box/key/box.html
@@ -0,0 +1,26 @@
+{% extends "box/base/box.html" %}
+{% load i18n %}
+{% load l10n %}
+{% get_current_language as LANGUAGE_CODE %}
+
+{% block title %}
+    {% trans "Public keys" %}
+{% endblock title %}
+
+{% block content %}
+<ul class="entry-list" id="keys">
+    {% for key in keys %}
+        {% include "box/key/entry.html" %}
+    {% endfor %}
+    <li class="entry small-row">
+        <div class="summary" id="new-key">
+            <div class="name">{% trans "Add public key" %}</div>
+            <div id="new-key-form">
+                <input type="text" placeholder="{% trans "Public key in OpenSSH format" %}" />
+                <input type="submit" value="{% trans "Add key" %}" />
+            </div>
+            <div class="clear"></div>
+        </div>
+    </li>
+</ul>
+{% endblock content %}
diff --git a/one/templates/box/key/entry.html b/one/templates/box/key/entry.html
new file mode 100644
index 0000000..36ab0b6
--- /dev/null
+++ b/one/templates/box/key/entry.html
@@ -0,0 +1,27 @@
+{% extends "box/base/entry.html" %}
+{% load i18n %}
+{% get_current_language as LANGUAGE_CODE %}
+
+{% block content %}
+<li class="entry">
+    {{block.super}}
+</li>
+{% endblock content %}
+
+{% block summary %}
+<div class="summary">
+    <div class="name">
+        {{key}}
+    </div>
+    <div class="actions">
+        <a href="#" class="remove" data-id="{{key.id}}">
+            <img src="/static/icons/minus-circle.png" alt="{% trans 'Remove' %}" />
+        </a>
+    </div>
+    <div class="clear"></div>
+</div>
+{% endblock summary %}
+
+{% block details %}
+<textarea>{{key.key}}</textarea>
+{% endblock details %}