New developer tool / app: Penny

Hi all! Last weekend while working on an app I got a bit frustrated that there was no easy way to view and change data in my Pod. So my side project for this week was a small app that let’s you do just that :slight_smile:

With Penny, you can browse the files in your Pod, upload new ones, and most importantly, see and change the data in there. The goal is to help developers understand how to model their data in a Pod, and to debug issues when writing their own. In other words, this is a developer tool, i.e. not intended for regular users.

Give it a try at

Let me know what you think, and if there’s anything that could make it more useful to you.



I like it!!! As usual, great job! Are you able to incorporate mashlib data browser so that we can actually see the file?

Very nice and helpful tool! I am going to use it.

1 Like

Great ! :+1:
Must just check width on mobile

1 Like

Why must URLs be so darned long? But thanks for pointing it out, should be better now :slight_smile:

1 Like

Are you able to incorporate mashlib data browser so that we can actually see the file?

Integrating mashlib is not trivial and I doubt that it would look good, but I just added the ability to preview images and text files. Hopefully that covers some of your needs :slight_smile:

(I might add the ability to edit data as raw Turtle as well at some point, but that’s not something I tend to do often, so probably not any time soon.)


Hi Vincent, great stuff!

What would you think about creating a configuration for it to be a Community Solid Server UI?

I’ve done this for Mashlib here:
I’m thinking of renaming this repository to community-server-configs such that we can have a whole bunch of UIs.


Hi, Vincent et. al. Newbie here. I’m getting up to speed on how Solid works and tried this tool.

How do I modify permissions? When I very first connected to Penny, I didn’t give it permission to read all the files in my pod.

I then added “” to “trusted connections”. Penny still can’t read what’s in my pod.

It gives “An unknown error (403) occurred.” as an error.

How do I reset the permissions that it asks for in the beginning?

To help understand solid you could try

1 Like

Hi Ruben, that would be neat, but unfortunately it’s a bit too much work for me at the moment to figure out how to do that. Hopefully some day though :slight_smile:

Hi RCD, good to hear you’ve tried it out! Unfortunately, as you’ve experienced, the app permissions process is currently still somewhat cumbersome in the software used on and There’s some documentation on how to fix that here. If you share the name of your Pod, I can probably give you some more detailed help as well, in case that doesn’t solve it for you.

I’ll do the figuring out part below :slightly_smiling_face:
Doesn’t have to be you implementing it; it can be anyone from our open-source community (I could try myself as well). Maybe the below explanation could become an issue on the Penny repo with a “good first issue” tag.

Why configure Databrowser/Penny/… for the Community Solid Server?

A Solid pod by itself, strictly speaking, does not offer a person-focused UI. It stores documents, which you can access with Solid apps.

That’s why it makes sense to configure some kind of default UI, such that people can access their own pod more directly.

Penny seems to be a great app for that purpose, because it works with any kind of documents. Offering it as a default experience can be great for (developer) users of the CSS, and great for Penny as well, because it can become a go-to UI for the CSS, just like Databrowser has been for NSS.

How to start Penny on CSS?

It’s really simple; no programming is required! Start from the Databrowser configuration, and change:

I expect this takes around 5 to 10 minutes.

Additional integration

The databrowser does one additional bit of integration: it immediately loads the currently requested resource.

For example, if I visit Databrowser as a standalone app, it will as me what resource to browse. This is what Penny also does.

If I start Databrowser in integrated mode, it will directly load the resource through which it was requested ( in this case).

Doing so is optional, and would require a couple of lines of programming to load the current resource.


@RubenVerborgh I am interested in seeing how this all works out, can you put the pieces together so we can all see as an example of what your proposing. It sounds like a great idea.

Thanks for the detailed description Ruben. One question:

Is there a way to just point to a directory of assets? Since their names change whenever their content changes to make sure the old versions aren’t loaded from the cache.

And as a note to self for creating the issue: one additional step would be to set up CD to publish to npm as well.

Good idea, shouldn’t be to hard for us to implement: Will try to take this up myself, yet the code is sufficiently accessible for anyone to jump in.

I have for Mashlib:
It’s the same for any other UI.

Thanks will take a look.

This looks pretty cool Vincent!

Is there any way to integrate this with shex, or other Shapes?

Only comment I have is the UI itself uses very large elements, which makes it hard to read larger data sets since it causes a ton of scroll. Tighter UI might benefit this, especially since it’s a dev tool and not intended for a community audience.

1 Like

@Vincent I’m not sure if you reset anything, but it appears to be working now. I wasn’t sure if it was a simple cookie issue at first.

All–is there any documentation on setting up VSCode? I’m set up for QT6 on Ubunutu 20.04 but have yet to circle back to web development. Solid would be a fantastic exercise to get up to speed with.

1 Like

This is awesome Vincent! I can even see my movies directory created by media kraken, which I couldn’t before.


I’ve got two requests for being able to collapse Things already, which I think would help here. (Edit: collapsing is now supported.)

As for shapes: if they’re defined as RDF, you can modify shapes on your Pod already. Of course, a friendlier shape-specific interface could be added at some point (likewise for ACLs), but I don’t expect to get around to that any time soon unfortunately.