https://github.com/mostlygeek/tailcities
https://github.com/mostlygeek/tailcities
Last synced: about 1 month ago
JSON representation
- Host: GitHub
- URL: https://github.com/mostlygeek/tailcities
- Owner: mostlygeek
- License: apache-2.0
- Created: 2025-09-19T00:36:02.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-09-23T03:55:13.000Z (10 months ago)
- Last Synced: 2025-09-23T05:48:00.234Z (10 months ago)
- Language: Go
- Size: 238 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README

# 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