diff --git a/core/builder.go b/core/builder.go
index dcc22afb99262b4be4791b8049d2f04734eedcea..76953ad048beac88b4b2ca99530fb84b87cf1986 100644
--- a/core/builder.go
+++ b/core/builder.go
@@ -1,12 +1,17 @@
 package core
 
 import (
+	"crypto/rand"
+	"encoding/base64"
 	"errors"
 
 	ds "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-datastore"
 	dsync "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-datastore/sync"
 	context "github.com/ipfs/go-ipfs/Godeps/_workspace/src/golang.org/x/net/context"
+	key "github.com/ipfs/go-ipfs/blocks/key"
+	ci "github.com/ipfs/go-ipfs/p2p/crypto"
 	repo "github.com/ipfs/go-ipfs/repo"
+	cfg "github.com/ipfs/go-ipfs/repo/config"
 )
 
 var ErrAlreadyBuilt = errors.New("this builder has already been used")
@@ -28,10 +33,32 @@ func NewNodeBuilder() *NodeBuilder {
 	}
 }
 
-func defaultRepo() repo.Repo {
+func defaultRepo() (repo.Repo, error) {
+	c := cfg.Config{}
+	priv, pub, err := ci.GenerateKeyPairWithReader(ci.RSA, 1024, rand.Reader)
+	if err != nil {
+		return nil, err
+	}
+
+	data, err := pub.Hash()
+	if err != nil {
+		return nil, err
+	}
+
+	privkeyb, err := priv.Bytes()
+	if err != nil {
+		return nil, err
+	}
+
+	c.Bootstrap = cfg.DefaultBootstrapAddresses
+	c.Addresses.Swarm = []string{"/ip4/0.0.0.0/tcp/4001"}
+	c.Identity.PeerID = key.Key(data).B58String()
+	c.Identity.PrivKey = base64.StdEncoding.EncodeToString(privkeyb)
+
 	return &repo.Mock{
 		D: dsync.MutexWrap(ds.NewMapDatastore()),
-	}
+		C: c,
+	}, nil
 }
 
 func (nb *NodeBuilder) Online() *NodeBuilder {
@@ -65,7 +92,11 @@ func (nb *NodeBuilder) Build(ctx context.Context) (*IpfsNode, error) {
 	}
 	nb.built = true
 	if nb.repo == nil {
-		nb.repo = defaultRepo()
+		r, err := defaultRepo()
+		if err != nil {
+			return nil, err
+		}
+		nb.repo = r
 	}
 	conf := standardWithRouting(nb.repo, nb.online, nb.routing, nb.peerhost)
 	return NewIPFSNode(ctx, conf)