A web-based development toolkit for testing and debugging ActivityPub servers that implement the Client-to-Server (C2S) protocol.
Note
This tool is designed for developers and server administrators to validate C2S implementations, not as an end-user client for social media activities (image sharing, microblogging, etc.). It is still in active development.
- Fully browser-based
- Direct interaction with ActivityPub servers via C2S API
- OAuth 2.0 authorization support with diagnostic features
- Support for OAuth2 CIMD
- Support for RFC9728 - OAuth2 Protected Resource Metadata
- Supports RFC6750 bearer tokens (without an OAuth2 flow)
- Support for Mastodon legacy OAuth2 implementation
- Authorized actor discovery using multiple methods
- ActivityPub object preview and actions
- Supports NodeInfo and WebFinger APIs
- JSON browser for inspecting ActivityPub objects
- Media Upload Support
- Embedded automated testing framework
- Server capability reports with test results
- Server capabilities data export
- Resource Posting Tools
- Optional sidecar server to help diagnose CORS problems
This implements the ActivityPub Media Upload wiki discussion. The description of the functionality is not completely clear so it may not work with some servers.
If a server requires CIMD, you will need to serve the document from somewhere. There is a client-metadata.json file in this project that will be served when the project is run in development mode. It must be edited to match your client credentials.
If you have issues with Vite and allowed host names, you can set the VITE_ALLOWED_HOSTS (comma-separated) to a list of authorized domain anmes. The default is localhost.
- Pluggable AP object previews and actions
- Test creation from resource templates
- Clone the repository:
git clone https://github.com/steve-bate/activitypub-c2s-toolkit.git
cd activitypub-c2s-toolkit- Install dependencies:
npm install- Start the development server
npm run dev- Frontend Framework: Vue 3 with TypeScript
- Build Tool: Vite
- Styling: Tailwind CSS
- Routing: Vue Router
- State Management: Pinia (stores)
- Code Quality: ESLint
- Forms: FormKit
- Node.js (version 16 or higher recommended)
- npm or yarn package manager
The application will be available at http://localhost:5173 (or another port if 5173 is in use).
Create a production build:
npm run buildThe built files will be in the dist directory.
Preview the production build locally:
npm run previewThis project is licensed under the MIT License - see the LICENSE file for details.
- ActivityPub - W3C Recommendation
- Activity Streams 2.0 - W3C Recommendation
- Activity Vocabulary - W3C Recommendation
- ActivityPub HTTP API Task Force - SWICG Repository
- RFC 6749 - The OAuth 2.0 Authorization Framework
- RFC 6750 - OAuth 2.0 Bearer Token Usage
- RFC 7591 - OAuth 2.0 Dynamic Client Registration Protocol
- RFC 7636 - Proof Key for Code Exchange (PKCE)
- RFC 8414 - OAuth 2.0 Authorization Server Metadata
- OAuth 2.0 Client-Initiated Metadata Document (CIMD) - IETF Draft
- OAuth 2.0 Protected Resource Metadata - IETF Draft
- IndieAuth - IndieWeb OAuth 2.0 extension (defines
meparameter)
This project has been partially supported by a grant from the NLnet Foundation.



