diff --git a/routers/api/v1/activitypub/repository.go b/routers/api/v1/activitypub/repository.go
index 1f2599f0de..9805c0f4a1 100644
--- a/routers/api/v1/activitypub/repository.go
+++ b/routers/api/v1/activitypub/repository.go
@@ -1,12 +1,21 @@
-// Copyright 2023 The Gitea forgejoAuthors. All rights reserved.
+// Copyright 2023 The forgejo Authors. All rights reserved.
 // SPDX-License-Identifier: MIT
 
 package activitypub
 
 import (
+	"fmt"
 	"net/http"
+	"strings"
 
+	"code.gitea.io/gitea/modules/activitypub"
 	"code.gitea.io/gitea/modules/context"
+	"code.gitea.io/gitea/modules/log"
+	"code.gitea.io/gitea/modules/setting"
+
+	ap "github.com/go-ap/activitypub"
+	//f3 "lab.forgefriends.org/friendlyforgeformat/gof3"
+	"github.com/go-ap/jsonld"
 )
 
 // Repository function returns the Repository actor for a repo
@@ -26,7 +35,21 @@ func Repository(ctx *context.APIContext) {
 	//   "200":
 	//     "$ref": "#/responses/ActivityPub"
 
-	ctx.Status(http.StatusNoContent)
+	// TODO: Mabe we should use F3 Repo instead?
+	link := fmt.Sprintf("%s/api/v1/activitypub/repoistory-id/%d", strings.TrimSuffix(setting.AppURL, "/"), ctx.Repo.Repository.ID)
+	repository := ap.ApplicationNew(ap.IRI(link))
+	repository.Name.Set("en", ap.Content(ctx.Repo.Repository.Name))
+
+	binary, err := jsonld.WithContext(jsonld.IRI(ap.ActivityBaseURI), jsonld.IRI(ap.SecurityContextURI)).Marshal(repository)
+	if err != nil {
+		ctx.ServerError("MarshalJSON", err)
+		return
+	}
+	ctx.Resp.Header().Add("Content-Type", activitypub.ActivityStreamsContentType)
+	ctx.Resp.WriteHeader(http.StatusOK)
+	if _, err = ctx.Resp.Write(binary); err != nil {
+		log.Error("write to resp err: %v", err)
+	}
 }
 
 // PersonInbox function handles the incoming data for a repository inbox