···11+---
22+title: 'Tangled.sh'
33+description: 'Moving this blog over to Tangled.sh, a AtProto git collaboration platform.'
44+date: '8/28/25'
55+image: {
66+ src: 'https://i.imgur.com/e6pNW5L.jpeg',
77+ alt: 'A pile of tangled wires of different colors.'
88+}
99+isPublished: true
1010+---
1111+1212+import {SIGNAL_LINK} from '@/consts';
1313+1414+Hello everyone, I love how I made this blog but I haven't had too much energy to write anything. However, I wanted to write this today since I've moved the repository of this website to [Tangled.sh](https://tangled.sh/). I made this change because I like supporting new projects that pop up on AtProto but also I like the idea of this website being tied to my Bluesky account more than my personal GitHub. Even though Tangled is relatively new, I found that it was pretty easy to get started and I thought I'd write about some of the things I went through to get my website up and running.
1515+1616+## SSH Keys
1717+1818+A thing I found pretty nice, but not surprising, was that I was able to use the same SSH key that I had been using for my GitHub. It was pretty easy to grab my public key from `~/.ssh/*.pub` and add it to my registered keys in my Tangled settings. I imagine if you wanted to create a new key it would be pretty much the same steps as [this](https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent).
1919+2020+## Switching Remote URLs
2121+2222+Once I had my SSH key it was also very easy to take my local folder that had my original GitHub repository and switch it over to the new Tangled remote URL:
2323+2424+```sh
2525+git remote set-url origin git@tangled.sh:claycow.com/claycow
2626+git push
2727+```
2828+2929+The only thing that was a bit weird with this was that there were always two commits that needed to be pulled in and it just wouldn't resolve itself with `git pull`. So, I ended up running the following and it cleared them out:
3030+3131+```sh
3232+git branch -r
3333+git branch -u origin/main
3434+git checkout -b main
3535+git push -u origin main
3636+```
3737+3838+## Vercel & Deployment Workflow
3939+4040+Since Vercel doesn't currently have a integration with Tangled, I had to remove my current connection with GitHub and utilize the Vercel CLI tool. I think I initially started by just reading the [documentation](https://vercel.com/docs/cli) and running `vercel --prod` locally which deployed successfully.
4141+4242+Luckily, Tangled added the ability to have pipelines, similar to GitHub Actions, earlier this month. Before I actually read the documentation on them I just saw the tab for it in the repository and enabled it. I honestly thought that it was just going to work with my `.github/workflows` directory but it obviously didn't and I ended up having to rename the directory to `.tangled/workflows`. I made that push thinking it would all work from there on out but Tangled also has a different way of writing workflows compared to GitHub Actions so I fucked around way too much before finding the [proper documentation](https://tangled.sh/@tangled.sh/core/blob/master/docs/spindle/pipeline.md) (don't look at my commit history, it's kind of embarrassing 😅). After fiddling with the workflow for a bit I ended up with this configuration that works for this website:
4343+4444+```yaml
4545+when:
4646+ - event: ["push", "pull_request"]
4747+ branch: ["main"]
4848+4949+engine: nixery
5050+5151+dependencies:
5252+ nixpkgs:
5353+ - nodejs
5454+ - perl
5555+5656+steps:
5757+ - name: Deploy to Vercel
5858+ env:
5959+ VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
6060+ VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }}
6161+ VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
6262+ command: |
6363+ npx vercel pull --yes --environment=production --token=$VERCEL_TOKEN
6464+ npx vercel build --prod --token=$VERCEL_TOKEN
6565+ npx vercel deploy --prebuilt --prod --token=$VERCEL_TOKEN
6666+```
6767+6868+The above should take any website built with Nodejs and NPM with a Vercel project and deploy it. You will have to set the secrets for the CLI tool but it's pretty easy after you figure out where to find them. I used part of [this blog](https://www.freecodecamp.org/news/deploy-to-vercel-with-github-actions/) to figure out which enironment variables I needed and what to name them.
6969+7070+Some things I will call out is that you should specify the `engine` otherwise when you push it will have a warning about including it. Also, I don't know whether it's a required dependency for Astro or Vercel but for my current setup I had to add the `perl` dependency. It took me awhile to figure out what dependencies were even available to me but I think [this website](https://nixos.wiki/wiki/Perl) tells you what is available since their runner is based on [NixOS](https://nixos.org/).
7171+7272+After all that, I saw the beautiful green checkmark next to my commit and that there was a recent build on my Vercel dashboard. Once I saw that, I made my original repository on GitHub private and I made a couple small changes on my local. Once I saw that the workflow successfully sent a build request to Vercel, I was able to go to [claycow.com](https://claycow.com/) and see the updates.
7373+7474+## Future Plans
7575+7676+Now that I got this website on Tangled, I think I'd like to add more things as this platform grows. I've always felt more free to express myself through my online, furry persona so it is really nice to have a place to contribute through it now. I hope to add more repositories on Tangled in the future and collaborate with some of my Bluesky mutuals and followers 🙂.
7777+7878+On another note, I'm currently in the process of building my own server computer. I've been wanting one for awhile now, ever since I had my [Framework 13](https://frame.work/laptop13) strapped to the wall by my router at the last place I lived, and I'm excited to put it together this weekend. Since Tangled allows for [self-hosted Spindles](https://tangled.sh/@tangled.sh/core/blob/master/docs/spindle/hosting.md), I'd love to eventually help support the platform by hosting one on my new server. I don't really know how it works right now, if it's just hosted for me or it contributes to the network of pipeline requests, but I think it'd be cool to try it out.
7979+8080+One thing relating to the future of this website, I'd like to eventually setup a way to statically build my Bluesky posts into pages as a way to keep a history, just in case Bluesky ever goes down. I think I'd have to implement some form of [ISR](https://vercel.com/docs/incremental-static-regeneration) since I wouldn't want to pull all my posts everytime this site needs to be built, that would take forever and be a huge waste of resources.
8181+8282+If you got any questions, feel free to reach out via Bluesky or message me on <a href={SIGNAL_LINK}>Signal</a>.
8383+8484+## Footnotes & Links
8585+8686+- [Tangled.sh](https://tangled.sh/)
8787+- [Vercel CLI](https://vercel.com/docs/cli)
8888+- [Spindle Documentation](https://tangled.sh/@tangled.sh/core/blob/master/docs/spindle/pipeline.md)