Adds a "Run with Docker" section between "Get Started" and "Contributing" covering: single-command boot, common commands, compose.override.yaml.example, troubleshooting (port conflicts, UID/GID on Linux, first-boot expectations), and the production image build hint for self-hosters. |
||
|---|---|---|
| .claude/skills | ||
| .github | ||
| app | ||
| bootstrap | ||
| config | ||
| database | ||
| docker | ||
| lang | ||
| maizzle | ||
| public | ||
| resources | ||
| routes | ||
| storage | ||
| stubs | ||
| templates | ||
| tests | ||
| .dockerignore | ||
| .editorconfig | ||
| .env.ci | ||
| .env.example | ||
| .env.testing | ||
| .gitattributes | ||
| .gitignore | ||
| .mcp.json | ||
| .prettierignore | ||
| .prettierrc | ||
| artisan | ||
| boost.json | ||
| CLAUDE.md | ||
| components.json | ||
| compose.override.yaml.example | ||
| compose.yaml | ||
| composer.json | ||
| composer.lock | ||
| eslint.config.js | ||
| GEMINI.md | ||
| LICENSE.md | ||
| package-lock.json | ||
| package.json | ||
| phpunit.xml | ||
| pint.json | ||
| README.md | ||
| tsconfig.json | ||
| vite.config.ts | ||
The open-source alternative to Buffer, Hootsuite, and Later.
Schedule, write, and publish to every social network from one place.
Self-hosted. Built for teams, agencies, and creators who own their data.
Cloud • Documentation • Roadmap • Community
TryPost 1.0 is here
A massive release that turns TryPost into a complete open-source social media platform.
- MCP Server — connect Claude, Cursor, ChatGPT, and any MCP client. Schedule, publish, and pull metrics with natural language.
- REST API — Personal Access Tokens, every workflow you can do in the dashboard, available over HTTP.
- Workspaces & Teams — manage multiple brands or clients in isolated environments. Invite team members with role-based permissions.
- AI Carousel Generator — type a prompt, get a multi-slide LinkedIn / Instagram carousel back, with images and copy on-brand.
- Brand Profile — set tone, voice, language, and colors once. Every AI generation respects them automatically.
- Analytics — per-account engagement metrics from every platform that exposes them, in a single dashboard.
Read the release notes →
Why TryPost
Tired of paying $30–$200/month per user for a scheduler? Tired of your content sitting on someone else's database?
| Self-hosted, your data | Your posts, drafts, and metrics never leave your server |
| No artificial limits | Unlimited posts, unlimited connected accounts, unlimited workspaces |
| AI built in | Captions, carousels, on-brand voice — using your own keys |
| Multi-tenant ready | Workspaces + roles for agencies managing many clients |
| API + MCP first-class | Automate everything; your AI assistant can post for you |
| AGPL-licensed | Inspect every line, fork it, ship it — forever free |
Features
| Visual Calendar | See every scheduled post at a glance, switch between month/week/day |
| Multi-Platform Composer | One draft → preview & tweak for every network in parallel |
| AI Generate / Review | Draft from a prompt, get inline feedback before you publish |
| AI Carousel Builder | Prompt → multi-slide carousel with images, on-brand |
| Brand Profile | Tone, voice, language, colors — applied to every AI call |
| Asset Library | Reusable workspace media + Unsplash & Giphy search built in |
| Signatures & Labels | Reusable text blocks (hashtags, CTAs) and color-coded post tags |
| Team Collaboration | Owner / Admin / Member roles, comments with @mentions on drafts |
| Workspaces | Isolate brands, clients, or projects in their own spaces |
| REST API + MCP | Full programmatic control; AI assistants integrate natively |
| Analytics | Per-account engagement metrics across every supported platform |
| Multi-language | English, Spanish, Portuguese |
Supported Platforms
X (Twitter) |
TikTok |
|||
YouTube |
Threads |
Bluesky |
Mastodon |
Get Started
| Try it on Cloud | The fastest way. Sign up at trypost.it |
| Self-host | Free forever. Installation guide → |
| Run with AI assistants | Connect Claude / Cursor / ChatGPT via MCP → |
Run with Docker (recommended for contributors)
A single command brings up the full stack — Laravel app, Postgres, Redis, Mailpit, Reverb (websockets), Horizon (queue dashboard), and the scheduler — with no host PHP or Node prerequisites:
git clone https://github.com/trypost-it/trypost.git
cd trypost
docker compose up --build
First boot takes ~3–4 minutes (composer install, npm ci, asset build, migrations). Subsequent boots are seconds. When the app container reports healthy, open http://localhost:8000.
Mail UI at http://localhost:8025. Vite HMR on :5173. Reverb websocket on :8080.
Common commands
# Artisan, Composer, Pest
docker compose exec app php artisan tinker
docker compose exec app php artisan test --compact
docker compose exec app composer require some/package
# View logs (one stream per process)
docker compose logs -f app
# Stop the stack
docker compose down
# Wipe all data (db, redis, vendor, node_modules)
docker compose down -v
Customizing your environment
Compose merges compose.override.yaml (gitignored, personal) on top of the committed compose.yaml. Copy the example and edit:
cp compose.override.yaml.example compose.override.yaml
Common tweaks (port forwarding, Xdebug, UID/GID alignment) are documented inline in that file.
Troubleshooting
- Port already in use — set
APP_PORT,VITE_PORT,FORWARD_DB_PORT,FORWARD_MAILPIT_UI_PORTin your shell or.env, or usecompose.override.yaml. - Files written by container show as root-owned (Linux) — pass your UID/GID at build time:
UID=$(id -u) GID=$(id -g) docker compose up --build - Vite HMR not connecting — confirm
:5173is forwarded and not blocked by your firewall; checkdocker compose logs appfor the Vite process output. - First boot is stuck — composer install + npm ci run the first time only. Watch progress with
docker compose logs -f app. Don't Ctrl-C in the first 3–4 minutes. - Reset everything —
docker compose down -v && docker compose up --buildre-runs migrations and re-seeds dependencies.
Production image
The same docker/Dockerfile exposes a production target for self-hosters:
docker build --target production -t trypost:latest -f docker/Dockerfile .
The production image bakes in composer install --no-dev, npm run build, SSR build, and a hardened OpCache profile. Note that VITE_REVERB_HOST is baked into the JS bundle at image build time — set it for your deployment hostname before building.
Contributing
We love contributions, no matter how small. Pick an issue, say hi in Discussions, or just open a PR with what you'd like to see.
If TryPost is useful to you, a star helps more people find it. That's the most valuable contribution if you're short on time.
License
GNU Affero General Public License v3.0 — use, modify, fork, self-host, and redistribute, including commercially. If you run a modified version as a network service, you need to make your changes available to its users (AGPL §13).
Built openly by the community. Star us on GitHub and tell a friend.