No description
Find a file
Paulo Castellano 5bb39da598 fix(permissions): enforce workspace roles across backend and UI
Viewers could mutate posts, automations and trigger AI write endpoints,
and every role saw create/manage affordances that 403'd on click.

Backend (security):
- PostPolicy update/delete now require member+ (was tenancy-only), which
  also gates the AI write endpoints that authorize('update')
- AutomationPolicy create/update/delete require member+; activate/pause
  delegate to update
- AutomationController authorizes index/store/show; AnalyticsController
  authorizes view
- Comments stay open to members incl. viewer (by design)

Frontend (UI gating via new useWorkspaceRole composable):
- Sidebar: create post / create workspace / automations / library nav
- Accounts grid: connect / disconnect / reconnect (admin+)
- Members: invite / change role / remove / cancel invite (admin+)
- Account billing tab (owner); posts index + calendar create affordances

Tests: PostPolicyTest, AutomationPolicyTest (all four roles) and an
end-to-end WorkspaceRolePermissionsTest; aligned the automation test
suites' account/workspace setup with role pivots.
2026-06-22 16:31:54 -03:00
.claude chore: remove unused Pennant package and dead user-timezone handling 2026-06-22 13:37:38 -03:00
.cursor/rules chore: update AI agent guidelines and refactor prompt handling 2026-05-21 18:53:37 -03:00
.github Enrich Copilot review instructions with examples and missing conventions 2026-06-10 14:26:54 -03:00
app fix(permissions): enforce workspace roles across backend and UI 2026-06-22 16:31:54 -03:00
bootstrap Add Telegram connection flow (controller + webhook) 2026-06-13 21:39:03 -03:00
config feat(channels): add Discord as a social channel 2026-06-16 14:44:00 -03:00
database chore: remove legacy plan tiers (starter/plus/pro/max) 2026-06-22 15:31:32 -03:00
docker Make webhook host configurable via WEBHOOK_URL (sendkit-style domain group) 2026-06-14 09:31:00 -03:00
lang fix(members): preserve invited role on accept and surface viewer in role menu 2026-06-22 14:24:19 -03:00
maizzle fix(security): resolve npm audit in maizzle email toolchain 2026-05-21 20:29:32 -03:00
public chore(ai-templates): remove orphaned carousel.png thumbnail 2026-06-18 11:11:14 -03:00
releases chore(release): add v1.0.3 customer email draft 2026-06-17 09:51:55 -03:00
resources fix(permissions): enforce workspace roles across backend and UI 2026-06-22 16:31:54 -03:00
routes feat(onboarding): require connecting a social network before checkout 2026-06-22 12:31:44 -03:00
storage chore: first commit 2026-01-14 22:13:44 -03:00
stubs feat: implement MCP server with tools, Post API tests, auth middleware 2026-03-29 20:30:36 -03:00
templates refactor: reorganize settings UI, migrate post templates to a file-based registry, and remove legacy video generation features 2026-05-03 13:44:13 -03:00
tests fix(permissions): enforce workspace roles across backend and UI 2026-06-22 16:31:54 -03:00
.dockerignore chore: add .dockerignore 2026-05-12 23:44:55 -03:00
.editorconfig chore: first commit 2026-01-14 22:13:44 -03:00
.env.ci feat: adding tests.. 2026-01-18 22:01:55 -03:00
.env.example chore: remove vestigial onboarding OAuth flag and legacy plan env vars 2026-06-22 13:54:42 -03:00
.env.testing feat: improvements on ui 2026-01-21 20:50:57 -03:00
.gitattributes chore: first commit 2026-01-14 22:13:44 -03:00
.gitignore chore(i18n): drop orphan cannot_edit_published key + gitignore compiled JSONs 2026-05-19 13:12:13 -03:00
.mcp.json chore: update boost skills and config 2026-03-31 09:36:09 -03:00
.prettierignore chore: first commit 2026-01-14 22:13:44 -03:00
.prettierrc chore: first commit 2026-01-14 22:13:44 -03:00
artisan chore: first commit 2026-01-14 22:13:44 -03:00
boost.json chore: remove unused Pennant package and dead user-timezone handling 2026-06-22 13:37:38 -03:00
Caddyfile feat(docker): add Caddy reverse proxy and domain-portable Reverb config 2026-05-27 14:53:46 -03:00
CLAUDE.md chore: remove unused Pennant package and dead user-timezone handling 2026-06-22 13:37:38 -03:00
components.json chore: first commit 2026-01-14 22:13:44 -03:00
compose.override.yaml.example feat(docker): replace stale Sail compose with self-contained stack 2026-05-12 23:44:55 -03:00
compose.prod.yaml refactor(docker): align echo.ts with the shared sendkit config 2026-05-27 15:17:47 -03:00
compose.yaml feat(docker): replace stale Sail compose with self-contained stack 2026-05-12 23:44:55 -03:00
composer.json chore: remove unused Pennant package and dead user-timezone handling 2026-06-22 13:37:38 -03:00
composer.lock chore: remove unused Pennant package and dead user-timezone handling 2026-06-22 13:37:38 -03:00
eslint.config.js fix: address PR review findings — publish, REST store, SSRF, race 2026-05-04 12:16:39 -03:00
GEMINI.md chore: update config files and remove unused translation files 2026-01-26 12:02:24 -03:00
LICENSE.md chore: update project license from FSL to AGPL-3.0-only 2026-05-04 15:46:56 -03:00
package-lock.json Rename project from 'post.fotohof.at' to 'trypost' 2026-06-15 21:59:00 +02:00
package.json fix: upgrade concurrently to v10, security updates 2026-06-14 23:40:40 +02:00
phpunit.xml feat: adding tests 2026-01-18 22:04:34 -03:00
pint.json chore: first commit 2026-01-14 22:13:44 -03:00
README.md Update star history section for dark and light themes 2026-05-29 16:11:24 -03:00
tsconfig.json chore: first commit 2026-01-14 22:13:44 -03:00
vite.config.ts chore: add resources/css/app.css to vite build input 2026-05-03 20:30:34 -03:00

TryPost

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.

Stars License Release Discussions

CloudDocumentationRoadmapCommunity


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)

LinkedIn

Facebook

Instagram

TikTok

YouTube

Pinterest

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 →

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.


Star History

Star History Chart