An open API service indexing awesome lists of open source software.

https://github.com/mostlygeek/tailcities


https://github.com/mostlygeek/tailcities

Last synced: about 1 month ago
JSON representation

Awesome Lists containing this project

README

          

![Header Image](web/header.webp)

# TailCities

Tailcities an exploration of using Tailscale as an application platform. Explorations should be fun so we're bringing back the nostalgia of the personal web page.

- Notepad.exe → LLM
- FTP → MCP
- GeoCities → TailCities

At the heart of the experiment is the question:

> What's it like building an application where identity is built into the network?

1. Can we skip building login pages? - YES!
1. How is authorization (_what I am allowed to do_) affected when authentication (my identity) is implicit?
1. What are the trade offs when access is over tailscale only? - TBD
1. What changes when MCP is the only api and we need an LLM to be our agent?

## Features

- **Tailscale Integration**: Runs securely within your tailnet using tsnet
- **Personal Pages**: Users can create pages at `/~username` paths
- **SQLite Storage**: Lightweight database for storing user pages
- **MCP Support**: Model Context Protocol integration for AI-assisted editing
- **Retro Terminal Aesthetic**: Classic green-on-black terminal styling

## Installation

1. Ensure you have Go installed (1.20 or later)
2. Clone this repository
3. Build the project:
```bash
make build
```

## Usage

Run TailCities with default settings:

```bash
./tailcities
```

### Command Line Options

- `-hostname`: Hostname on tailnet (default: "tailcities")
- `-dir`: Directory to store Tailscale state (default: "data")
- `-db`: Path to database file (default: "data/tailcities.db")
- `log`: Set log level (debug, info, warn, error) - only debug currently supported

### Example

```bash
./tailcities -hostname tailcities -dir ./state -db ./state/pages.db
```

## Access

Once running, TailCities will be available at:

```
http://tailcities/ (or your configured hostname)
```

Only users authenticated to your Tailscale network can access the service.

## MCP (Model Context Protocol) Integration

### Testing with MCPInspector

- use the `http://tailcities` as the endpoint
- (to be written)

### Testing with Claude Desktop

1. Run tailcities
1. Set MCP config in Claude Desktop: “Settings → Developer → Edit Config”:

```json
{
"mcpServers": {
"vibecities": {
"command": "npx",
"args": ["mcp-remote", "http://tailcities", "--allow-http"]
}
}
}
```

- `mcp-remote` is required as Claude desktop does not support remote transports
- `--allow-http` is required _only_ when vibecities is running somewhere other than localhost.

1. Start (or restart) Claude Desktop
1. Ask it to create your web page: "make me a fun retro theme webpage in tailcities"

## Development

### Prerequisites

- Go 1.20+
- Tailscale account and tailnet
- SQLite3

### Building

```bash
make build
```

## License

Apache 2.0 - See LICENSE.txt for details